• docs/v322_new.md src/vdmodem/vdmodem.c

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Wed Sep 30 23:44:06 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/452932d563e7786b3dc42955
    Modified Files:
    docs/v322_new.md src/vdmodem/vdmodem.c
    Log Message:
    vdmodem: Don't spin a CPU in the main loop when idle or connected (#1176)

    With the default MainLoopDelay and SocketSelectTimeout of 0 (from
    5fd72f315e, 2024-03-25), the main loop never blocked: SVDM used a full
    logical CPU while waiting for calls, and while connected. Rate pacing
    also spun whenever received data was waiting on the socket.

    Each pass now blocks: in select() while online (SocketSelectTimeout now defaults to 1ms), otherwise in the process-handle wait for at least 1ms, including while rate-limited so the mailslot and hangup event are still serviced every millisecond. The timer resolution is raised to 1ms for the duration of the loop so these waits (and thus the emulated data rate)
    aren't quantized to the default ~15ms tick. Setting SocketSelectTimeout=0 restores the old spin-wait while online.

    Incremented version to 0.7

    Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun Nov 8 17:55:18 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/300594a386d57f42613b520e
    Modified Files:
    docs/v322_new.md src/vdmodem/vdmodem.c
    Log Message:
    vdmodem: send the busy notice to callers when the modem is off-hook

    The listen thread only checked whether a call was already stored. A caller reaching a node that was off-hook with nobody connected (as a DOS BBS does
    with ATM0H1 during a local logon) was accepted and stored but never rang
    and got no busy notice: the connection sat silent until the caller gave
    up, and meanwhile the stored socket made the next caller receive the busy notice instead. The hunt group code already treated an off-hook, online or ringing node as busy; use the same test for every listening node, so such callers get the BusyNotice text and are disconnected.

    Behavior dates from the original listen thread in 3ec7fb7787 (2022-05-08).

    Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun Nov 8 17:55:18 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a02c3c7bf31dfb51fbe52e78
    Modified Files:
    docs/v322_new.md src/vdmodem/vdmodem.c
    Log Message:
    vdmodem: ring immediately for a new incoming call

    The RING result was only sent when RING_DELAY (6 seconds) had passed since
    the previous RING, and the timestamp of that RING was never reset when a
    new call arrived. A caller connecting within 6 seconds of the previous
    call's last RING therefore waited out the remainder of that interval
    before the first RING, and with it the auto-answer; the main loop also
    logged "Incoming connection" on every pass while it waited. Real modems
    ring as soon as a call arrives, and a hunt group makes back-to-back calls
    to one node common, so send the first RING at once and keep the 6-second cadence only for the rings that follow.

    Dates from the original main loop in 3ec7fb7787 (2022-05-08).

    Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net