https://gitlab.synchro.net/main/sbbs/-/commit/ff32528ab33ab49964a52146
Modified Files:
src/comio/comio_nix.c src/syncterm/CHANGES bbslist.c modem.c
Log Message:
syncterm: cut serial close stall and respect 3-wire flow control
Alt-H disconnect on a serial connection could stall for many seconds
on Linux/Wayland. Three pieces:
* comio/comio_nix.c: tcflush(fd, TCOFLUSH) before close() so the kernel
doesn't drain the tty transmit queue when HUPCL drops DTR. At low
baud with held-down CTS the per-byte drain timeout multiplied by the
queued byte count was the entire visible delay.
* syncterm/modem.c: when CONN_TYPE_SERIAL_NORTS, mask
COM_FLOW_CONTROL_RTS_CTS off the flow_control bitmask before
comSetFlowControl(). 3-wire wiring has no CTS line, so the tty
layer's RTS/CTS gate would block all output the moment the kernel
sampled CTS low (i.e. immediately).
* syncterm/bbslist.c: the Flow Control submenu for a NORTS entry now
offers only XON/XOFF and None. Stored fc is not rewritten on
cancel; modem.c masks the RTS/CTS bit at connect time regardless.
Reported on ticket 246 (Wayland Alt-H hang).
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net