Jacob points out that TS_EOL is broken in BINARY mode.
[u/mdw/putty] / telnet.c
index c45f20f..c0efd71 100644 (file)
--- a/telnet.c
+++ b/telnet.c
@@ -928,9 +928,10 @@ static void telnet_special(void *handle, Telnet_Special code)
        telnet->bufsize = sk_write(telnet->s, (char *)b, 2);
        break;
       case TS_EOL:
-       /* In BINARY mode, CR-LF becomes just CR. */
+       /* In BINARY mode, CR-LF becomes just CR -
+        * and without the NUL suffix too. */
        if (telnet->opt_states[o_we_bin.index] == ACTIVE)
-           telnet->bufsize = sk_write(telnet->s, "\r", 2);
+           telnet->bufsize = sk_write(telnet->s, "\r", 1);
        else
            telnet->bufsize = sk_write(telnet->s, "\r\n", 2);
        break;