Now that we can configure whether ^C and friends generate Telnet IP
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 24 Oct 2001 11:50:07 +0000 (11:50 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 24 Oct 2001 11:50:07 +0000 (11:50 +0000)
and friends, we should honour the user's choice even in line editing
mode. In particular, Telnet talkers don't like us randomly spraying
Telnet IP whenever the user accidentally hits ^C, so this is not a
helpful default.

git-svn-id: svn://svn.tartarus.org/sgt/putty@1316 cda61777-01e9-0310-a592-d414129be87e

ldisc.c

diff --git a/ldisc.c b/ldisc.c
index 492ad1e..e464c13 100644 (file)
--- a/ldisc.c
+++ b/ldisc.c
@@ -132,6 +132,13 @@ void ldisc_send(char *buf, int len, int interactive)
                    term_buflen--;
                }
                back->special(TS_EL);
+                /*
+                 * We don't send IP, SUSP or ABORT if the user has
+                 * configured telnet specials off! This breaks
+                 * talkers otherwise.
+                 */
+                if (!cfg.telnet_keyboard)
+                    goto default_case;
                if (c == CTRL('C'))
                    back->special(TS_IP);
                if (c == CTRL('Z'))
@@ -204,6 +211,7 @@ void ldisc_send(char *buf, int len, int interactive)
                }
                /* FALLTHROUGH */
              default:                 /* get to this label from ^V handler */
+                default_case:
                if (term_buflen >= term_bufsiz) {
                    term_bufsiz = term_buflen + 256;
                    term_buf = saferealloc(term_buf, term_bufsiz);