[git commit] libbb: add generic "fd polling and I/O" loop, use it in telnetd

Denys Vlasenko vda.linux at googlemail.com
Sat Feb 21 15:54:35 UTC 2026


commit: https://git.busybox.net/busybox/commit/?id=dc6e92c9903ef1d16f600e0425b3bb7273a0afb9
branch: https://git.busybox.net/busybox/log/?h=master

We do it, badly, in many places. Better to use one robust implementation.
Can be buggy yet.
Initial use is in a rather old, rarely used tech: telnet.

The I/O in telnetd should be fully non-blocking now,
including pty delays handling.

Several bugs in telnetd handling of IACs are fixed.

function                                             old     new   delta
ioloop_run                                             -     411    +411
net_to_pty__have_data_to_write                         -     368    +368
pty_to_net__write                                      -     318    +318
net_to_pty__write                                      -     180    +180
pty_to_net__read                                       -     171    +171
net_to_pty__have_buffer_to_read_into                   -     164    +164
pty_to_net__have_buffer_to_read_into                   -      90     +90
net_to_pty__read                                       -      87     +87
pty_to_net__have_data_to_write                         -      59     +59
make_new_session                                     491     550     +59
conn_close_fds                                         -      52     +52
accept_conn__accept                                    -      49     +49
conn_close_fds_remove_and_free                         -      27     +27
ioloop_remove_conn                                     -      22     +22
remove_and_free_to_pty                                 -      19     +19
ioloop_insert_conn                                     -      10     +10
accept_conn__can_accept                                -       6      +6
accept_conn__return_zero                               -       3      +3
static.ayt_response                                    -       2      +2
handle_sigchld                                        59      61      +2
free_session                                         130       -    -130
telnetd_main                                        1797     367   -1430
------------------------------------------------------------------------------
(add/remove: 19/1 grow/shrink: 2/1 up/down: 2099/-1560)       Total: 539 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 include/libbb.h                         |   86 +-
 libbb/ioloop.c                          |  262 +++++
 networking/telnet.txt                   |   53 +
 networking/telnetd.c                    | 1869 ++++++++++++++++++++++---------
 networking/{telnetd.c => telnetd.c.OLD} |    0
 5 files changed, 1699 insertions(+), 571 deletions(-)

Patch is too large, so refusing to show it


More information about the busybox-cvs mailing list