BBS:      TELESC.NET.BR
Assunto:  src/syncterm/rlogin.c
De:       Deuc¨
Data:     Sat, 9 May 2026 18:36:58 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/commit/d6dc31c7e5e083e7e254c97c
Modified Files:
	src/syncterm/rlogin.c
Log Message:
SyncTERM: rlogin OOB via exceptfds + MSG_OOB

Winsock2's SO_OOBINLINE + SIOCATMARK combo doesn't reliably surface
RFC 1282 urgent-mode control bytes, so rlogin's mode-switch / window-
size requests were dropped on Windows.  Drop SO_OOBINLINE entirely and
detect urgent via select()'s exceptfds, consuming the byte from its
separate mailbox with recv(MSG_OOB) once SIOCATMARK shows the inline
stream has drained to the mark.  Same code path on Windows and POSIX.

socket_check() is left untouched (many out-of-tree consumers); the
input thread now uses a bespoke inline select() that watches both
readfds and exceptfds.  Once OOB is signaled exceptfds is dropped from
the wait set to avoid a busy-loop while we wait for the inline read
pointer to reach the urgent point  RFC 1282 mode-switch bytes
(0x10/0x20) apply to data following the urgent ptr, so pre-mark inline
data must drain in the old mode first.

Co-Authored-By: Claude Opus 4.7 (1M context) 
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]