• `telnet_gate()` drops remote output when `outbuf` lacks free space (`R

    From Gabriel Conte@1:103/705 to GitLab issue in main/sbbs on Fri Nov 6 11:43:43 2026
    open https://gitlab.synchro.net/main/sbbs/-/work_items/1325

    `telnet_gate()` in `src/sbbs3/telgate.cpp` ignores the return value of `RingBufWrite()` (lines 468 and 470 on master, 95ff8c74). `RingBufWrite()` only copies what fits in `outbuf`, so once `outbuf` fills up, whatever doesn't fit is dropped.

    I ran into it with an `?rlogin` gate to a door that sends sixel, SyncTERM 1.10b as the caller, Synchronet 3.22a on Linux. Pictures came out with a band of garbage. With a TCP tap on both sides of sbbs, the caller's stream matched the door's until a chunk in the middle of the sixel data was missing.

    Keeping the unwritten part and retrying it, or only reading as much as `outbuf` can take, would fix it without blocking the loop. The local echo at line 420 has the same unchecked call.
    --- SBBSecho 3.38-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)