[git commit] telnetd: better AYT handling

Denys Vlasenko vda.linux at googlemail.com
Thu Apr 4 14:00:23 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=c6a8965297f96f63403a1f17606838a0cb4444c5
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
telnetd_main                                        1792    1837     +45

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 networking/telnetd.c | 11 ++++++++---
 1 file 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;
 	}


More information about the busybox-cvs mailing list