Skip to content

telnet: serial + monitor TCP listeners negotiate options on accept#24

Merged
techomancer merged 1 commit into
techomancer:mainfrom
hanshuebner:telnet
May 28, 2026
Merged

telnet: serial + monitor TCP listeners negotiate options on accept#24
techomancer merged 1 commit into
techomancer:mainfrom
hanshuebner:telnet

Conversation

@hanshuebner
Copy link
Copy Markdown
Contributor

Both serial ports (8880/tty2, 8881/tty1) and the monitor (8888) were raw TCP sockets — telnet clients stayed in NVT line-buffered mode with local echo and CR/LF mangling. Add a small RFC 854 state machine that, on accept, offers WILL ECHO + WILL SGA + WILL BINARY + DO BINARY so the client drops into char-at-a-time, host-echo, 8-bit-clean mode for the serial endpoints. Inbound IAC sequences are filtered out; outbound 0xFF on the serial side is escaped as IAC IAC.

The monitor uses a passive variant (no initial offers, just declines what the client offers) so the client keeps its local line editor and echo. All monitor write paths route through a CrlfWriter so bare \n renders as CRLF on the wire, as NVT requires.

Both serial ports (8880/tty2, 8881/tty1) and the monitor (8888) were raw TCP
sockets — telnet clients stayed in NVT line-buffered mode with local echo
and CR/LF mangling. Add a small RFC 854 state machine that, on accept,
offers WILL ECHO + WILL SGA + WILL BINARY + DO BINARY so the client drops
into char-at-a-time, host-echo, 8-bit-clean mode for the serial endpoints.
Inbound IAC sequences are filtered out; outbound 0xFF on the serial side is
escaped as IAC IAC.

The monitor uses a passive variant (no initial offers, just declines what
the client offers) so the client keeps its local line editor and echo. All
monitor write paths route through a CrlfWriter so bare \n renders as CRLF
on the wire, as NVT requires.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@techomancer techomancer merged commit 522dc7c into techomancer:main May 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants