Robert de Bath's multi-purpose patch, slightly modified.
[u/mdw/putty] / telnet.c
index 399c126..24962bb 100644 (file)
--- a/telnet.c
+++ b/telnet.c
@@ -174,6 +174,9 @@ static void c_write (char *buf, int len) {
        if (new_head != inbuf_reap) {
            inbuf[inbuf_head] = *buf++;
            inbuf_head = new_head;
+       } else {
+            term_out();
+            if( inbuf_head == inbuf_reap ) len++; else break;
        }
     }
 }
@@ -411,9 +414,11 @@ static void do_telnet_read (char *buf, int len) {
            else if (c == WONT) telnet_state = SEENWONT;
            else if (c == SB) telnet_state = SEENSB;
            else {
-               /* ignore (and print) everything else */
-               b[0] = c;
-               c_write(b,1);
+               /* ignore everything else; print it if it's IAC */
+               if (c == IAC) {
+                   b[0] = c;
+                   c_write(b,1);
+               }
                telnet_state = TOPLEVEL;
            }
            break;