X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/374330e25a6b51c40436fa869a381dd510790f6e..25d39ef60aed5cbfcc11f2dd064a3964a8c6ca3b:/telnet.c diff --git a/telnet.c b/telnet.c index 14881f96..33b921b0 100644 --- a/telnet.c +++ b/telnet.c @@ -171,7 +171,6 @@ static void s_write (void *buf, int len) { static void c_write (char *buf, int len) { while (len--) { int new_head = (inbuf_head + 1) & INBUF_MASK; - int c = (unsigned char) *buf; if (new_head != inbuf_reap) { inbuf[inbuf_head] = *buf++; inbuf_head = new_head; @@ -185,7 +184,7 @@ static void log_option (char *sender, int cmd, int option) { (cmd == WILL ? "WILL" : cmd == WONT ? "WONT" : cmd == DO ? "DO" : cmd == DONT ? "DONT" : ""), telopt(option)); - lognegot(buf); + logevent(buf); } static void send_opt (int cmd, int option) { @@ -286,11 +285,11 @@ static void process_subneg (void) { n = 4 + strlen(cfg.termspeed); b[n] = IAC; b[n+1] = SE; s_write (b, n+2); - lognegot("server:\tSB TSPEED SEND"); + logevent("server:\tSB TSPEED SEND"); sprintf(logbuf, "client:\tSB TSPEED IS %s", cfg.termspeed); - lognegot (logbuf); + logevent (logbuf); } else - lognegot ("server:\tSB TSPEED "); + logevent ("server:\tSB TSPEED "); break; case TELOPT_TTYPE: if (sb_len == 1 && sb_buf[0] == TELQUAL_SEND) { @@ -303,11 +302,11 @@ static void process_subneg (void) { b[n+4] = IAC; b[n+5] = SE; s_write (b, n+6); b[n+4] = 0; - lognegot("server:\tSB TTYPE SEND"); + logevent("server:\tSB TTYPE SEND"); sprintf(logbuf, "client:\tSB TTYPE IS %s", b+4); - lognegot(logbuf); + logevent(logbuf); } else - lognegot("server:\tSB TTYPE \r\n"); + logevent("server:\tSB TTYPE \r\n"); break; case TELOPT_OLD_ENVIRON: case TELOPT_NEW_ENVIRON: @@ -317,7 +316,7 @@ static void process_subneg (void) { char logbuf[50]; p++; sprintf (logbuf, "server:\tSB %s SEND", telopt(sb_opt)); - lognegot (logbuf); + logevent (logbuf); if (sb_opt == TELOPT_OLD_ENVIRON) { if (cfg.rfc_environ) { value = RFC_VALUE; @@ -350,7 +349,7 @@ static void process_subneg (void) { b[0] = IAC; b[1] = SB; b[2] = sb_opt; b[3] = TELQUAL_IS; n = 4; - e = cfg.environ; + e = cfg.environmt; while (*e) { b[n++] = var; while (*e && *e != '\t') b[n++] = *e++; @@ -369,7 +368,7 @@ static void process_subneg (void) { s_write (b, n); sprintf(logbuf, "client:\tSB %s IS %s", telopt(sb_opt), n==6 ? "" : ""); - lognegot (logbuf); + logevent (logbuf); } break; } @@ -411,7 +410,12 @@ static void do_telnet_read (char *buf, int len) { else if (c == WILL) telnet_state = SEENWILL; else if (c == WONT) telnet_state = SEENWONT; else if (c == SB) telnet_state = SEENSB; - else telnet_state = TOPLEVEL;/* ignore _everything_ else! */ + else { + /* ignore (and print) everything else */ + b[0] = c; + c_write(b,1); + telnet_state = TOPLEVEL; + } break; case SEENWILL: proc_rec_opt (WILL, c); @@ -677,7 +681,7 @@ static void telnet_size(void) { sprintf(logbuf, "client:\tSB NAWS %d,%d", ((unsigned char)b[3] << 8) + (unsigned char)b[4], ((unsigned char)b[5] << 8) + (unsigned char)b[6]); - lognegot (logbuf); + logevent (logbuf); } /*