Subj : src/syncterm/conn.h conn_telnet.c rlogin.c rlogin.h To : Git commit to main/sbbs/master From : Deuc¨ Date : Thu Apr 23 2026 18:36:00 https://gitlab.synchro.net/main/sbbs/-/commit/af5bb19de5b53360d1f357c0 Modified Files: src/syncterm/conn.h conn_telnet.c rlogin.c rlogin.h Log Message: SyncTERM: RLogin raw/cooked mode + scope rlogin hooks to RLOGIN conn types Implement the remaining RFC 1282 OOB control bytes: 0x10 (enter raw) and 0x20 (return to cooked). Cooked mode (the default) now does local TTY flow control Ä DC3 in user input pauses the recv loop, DC1 resumes Ä and neither byte reaches the remote. Raw mode passes both through. The rlogin protocol has no client-initiated raw request, so server- and client-initiated raw share a single flag: conn_api.binary_mode, upgraded to _Atomic bool. conn_binary_mode_on() now flips raw mode for rlogin, so zmodem/ymodem/xmodem transfers stay transparent to DC1/DC3 without the transfer code knowing about rlogin at all. The side-effect hook rlogin_binary_mode_on() just clears any pending pause; no off-hook needed. Also scope the rlogin-specific OOB / DC1/DC3 / SO_OOBINLINE paths to CONN_TYPE_RLOGIN and CONN_TYPE_RLOGIN_REVERSED. rlogin_connect is shared with RAW and MBBS_GHOST, and the input/output thread pair is shared with telnet_connect too; a new rlogin_active atomic gates all rlogin behavior so those other conn types remain transparent pipes. The 4 rlogin handshake conn_send()s now run BEFORE tx_parse_cb is installed, so a password or username containing 0x11/0x13 is passed through verbatim instead of being stripped as XON/XOFF. Atomics are explicitly atomic_store()'d at the top of rlogin_connect and telnet_connect; memset in conn_connect isn't a valid _Atomic init, and stale flag state from a prior session would be a mess. Co-Authored-By: Claude Opus 4.7 (1M context) --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .