https://gitlab.synchro.net/main/sbbs/-/commit/5a540e056f80c1af0ba86942
Modified Files:
docs/xymodem_verification.md
Log Message:
docs/xymodem: compare the three knob failures against lrzsz and DSZ
The first cut reported three options that fail hard rather than
degrading, and left it there. That was the wrong stopping point: XMODEM
has no capability negotiation, so somebody has to degrade, and the useful question is whether anyone else does better in the same situation.
Measured against both references, the three sort into three different
verdicts.
CRC fallback is ours to be proud of. XMODEM-CRC specifies the
degradation on the receiver: ask with C, fall back to NAK after enough unanswered attempts. Put a checksum-only sender in front of each
receiver and sexyz rc falls back and completes in 12 seconds, DSZ rx
falls back and completes, and lrz --xmodem -c does not, timing out at
40. So the deadlock reported for SendCRC=false is lrzsz declining to
degrade, not us.
G-mode fallback is ours to fix. The mirror test, a sender refusing G in
front of a G-mode receiver: DSZ rb -g drops out of G and completes, while
sexyz rg gives up with "Error fetching YMODEM header block" after 27
seconds. That is the clearest actionable item in the document.
And the receive-side block-size cap has nothing to compare against --
neither lrz nor DSZ exposes such a setting -- so MaxBlockSize is Synchronet-only and its sole reachable effect is to break a transfer that
would otherwise work.
The common thread that survives all three: when a capability mismatch
ends a session, nothing in the log names the cause.
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net