• src/sbbs3/zmodem.c

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tue Dec 2 15:29:39 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/ab995dd1db4530b0f3bd90ab
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Fix parity inversion in comments

    Even parity means that the high bit is *set* (when necessary) to insure an
    even number of set bits in every sent byte. Odd parity is the opposite.
    I had this backwards in my comments.

    ---
    þ 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 Fri Mar 6 21:58:36 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/02f0ebb9bd66b1c1ad3873b5
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Add some more log messages to zmodem_get_zfin()

    to try to root cause 'OO' transmission issue (observed with Chuck Forsberg's rz).

    ---
    þ 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 Fri Mar 6 22:30:03 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a3b7cff7fa45e4e5fb7a185f
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Call zmodem_flush() after sending the 'OO' after a ZFIN

    Chuck's rz (readline) waits indefinitely for these two O's.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sun Mar 15 16:01:53 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/87b7d946c0ab40a5a20343ee
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Remove vestigial int32_t casts truncating file sizes in zmodem_recv_files()

    Three comparisons between l and bytes cast bytes to int32_t, silently truncating file sizes > 2GB. Both variables are int64_t — the casts
    were left over from the 887147a69c "64-bitify" conversion where
    long/ulong became int32_t/uint32_t before being later widened to
    int64_t.

    Co-Authored-By: Claude Opus 4.6 <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 Mar 15 16:24:40 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c787342dc9ae4fd3005d224e
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Fix API violation in zmodem_recv_bin32_header()

    Introduced in commit 83b672364, Claude caught this:

    zmodem_recv_bin32_header() returns TRUE on error (zmodem.c:1200)
    When zmodem_rx() returns an error (c < 0) during CRC-32 header reception, the function returns TRUE (success) instead of FALSE. The subsequent CRC check will almost certainly catch this, but the function's contract is violated.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Jul 23 21:55:30 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a816b8cb21e49f495d818c4d
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Optimize ZMODEM transmit byte classification

    Replace the data-dependent switch in zmodem_tx() with a lookup table
    and session mask. This preserves the existing escaping behavior while
    reducing the per-byte CPU cost of ZMODEM uploads.

    Validate every byte and escape-mode combination against the previous classifier, and verify a real transfer byte-for-byte with lrz.

    Refs #1195

    Co-authored-by: OpenAI Codex <noreply@openai.com>

    ---
    ï¿­ Synchronet ï¿­ Vertrauen ï¿­ Home of Synchronet ï¿­ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jul 23 23:03:46 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e15a36f6908c70ae351a15fc
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    zmodem: bump zmodem_ver to 2.3

    Reflects the 2 GiB windowed-transfer fix (widening the transmit-window /
    ACK file positions from signed int32_t to uint32_t; GitLab #1196), the one functional change to zmodem.c this cycle.

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Jul 23 23:32:44 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/06282ad2f21eec8f375a9bf3
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Inline the common ZMODEM transmit path

    Hoist the active escape mask out of the per-byte ZMODEM data loops
    and defer the conditional-CR last_sent check until a CR is actually encountered.

    Split error reporting and non-normal escaping into noinline cold
    helpers. This allows the compiler to inline the class-table lookup and
    raw send callback directly into the data loops while leaving uncommon
    work out of the hot path.

    Six interleaved 1 GiB uploads to lrz improved average throughput from
    44.251 MiB/s to 50.651 MiB/s, a 14.46 percent increase.

    Verify classification against the previous implementation for every
    byte, escape-mode combination, and preceding byte. Inspect the release
    output for inlining and run the SyncTERM test suite.

    Refs #1195

    Co-authored-by: OpenAI Codex <noreply@openai.com>

    ---
    ï¿­ Synchronet ï¿­ Vertrauen ï¿­ Home of Synchronet ï¿­ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jul 24 00:10:51 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a84e414a9ae4b712e2d55c54
    Modified Files:
    src/sbbs3/zmodem.c
    Log Message:
    Merge branch 'master' of gitlab.synchro.net:main/sbbs

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