diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-04-04 16:00:23 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-04-04 16:00:23 +0200 |
commit | c6a8965297f96f63403a1f17606838a0cb4444c5 (patch) | |
tree | 8e06c2c7dd9fd8fe2be5a78eaceb0a05a2a6d8b3 | |
parent | 93594b1197cf3ae1835eedebbebb2b40ea2a81f7 (diff) |
telnetd: better AYT handling
function old new delta
telnetd_main 1792 1837 +45
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | networking/telnetd.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/networking/telnetd.c b/networking/telnetd.c index bd60c8681..e94d3bd3d 100644 --- a/networking/telnetd.c +++ b/networking/telnetd.c @@ -278,9 +278,14 @@ safe_write_to_pty_decode_iac(struct tsession *ts) goto update_and_return; } if (buf[1] == AYT) { - /* Send back evidence that AYT was seen. */ - buf[1] = NOP; - /*rc =*/ safe_write(ts->sockfd_write, buf, 2); + if (ts->size2 == 0) { /* if nothing buffered yet... */ + /* Send back evidence that AYT was seen */ + unsigned char *buf2 = TS_BUF2(ts); + buf2[0] = IAC; + buf2[1] = NOP; + ts->wridx2 = 0; + ts->rdidx2 = ts->size2 = 2; + } rc = 2; goto update_and_return; } |