• docs/sexyz.txt v322_new.md src/sbbs3/sexyz.c zmodem.c zmodem.h

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Aug 30 03:07:35 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/cf91dbd29c8cb87eeb272151
    Modified Files:
    docs/sexyz.txt v322_new.md src/sbbs3/sexyz.c zmodem.c zmodem.h
    Log Message:
    sexyz: remove Escape8thBit, and stop advertising ZMODEM's ESC8 option

    Setting Escape8thBit=true made sexyz advertise ZF0_ESC8 in its ZRINIT,
    asking the remote sender to escape every byte with the high bit set --
    which sexyz then could not decode, logging "Illegal sequence: ZDLE nnn"
    until the session timed out. It also ignored the flag when sending, so
    it never escaped for a peer that asked. The option has been advertised
    since 2005 and implemented in neither direction since the code was
    imported in 2003.

    There is also nothing to implement it against. ZMODEM.DOC names ESC8
    once, in passing, and never states how a high-bit byte is escaped, where
    it gives ESCCTL a full paragraph. The two programs that do implement it consequently disagree: Omen's DSZ quotes a high-bit byte as 0x0E
    followed by the byte with bit 7 cleared -- Kermit-style prefixing, and
    it switches to an unpublished frame type to do it -- while zmtx/zmrx
    2.04 sends ZDLE and the byte XOR 0x40. Advertising the bit commits us
    to whichever encoding the peer happens to have chosen, and we cannot
    satisfy both. Rob's call, and the right one: we have lived 21 years
    without it.

    Drop the ini key, drop the advertisement from zmodem_send_zrinit(), and
    say at both remaining sites why the flag is inert. The peer's request
    is still recorded from its ZRINIT for the log, and still ignored, which
    is what lrzsz does too.

    Verified: with Escape8thBit=true still present in sexyz.ini the ZRINIT
    now reads ZF0=0x23 with the ESC8 bit clear, and zmtx 2.04 -- which
    honours the request and previously aborted 766,470 bytes in -- transfers byte-identically. Error-recovery gates at 3e-6 remain 3 of 3 receiving
    and 3 of 3 sending.

    Documented in docs/sexyz.txt, the release notes, and the wiki. GitLab
    issue #1229.

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