• src/comio/comio_nix.c src/syncterm/CHANGES bbslist.c modem.c

    From Deuc¿@VERT to Git commit to main/sbbs/master on Wednesday, May 20, 2026 10:19:13
    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