Subj : docs/v322_new.md exec/load/822header.js newsutil.js src/smblib/smbtxt. To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Mon Sep 21 2026 22:21:21 https://gitlab.synchro.net/main/sbbs/-/commit/c265ffd0d3b4c794510c39b5 Modified Files: docs/v322_new.md exec/load/822header.js newsutil.js src/smblib/smbtxt.c Log Message: Don't claim RFC-3676 format=flowed for message text that isn't newsutil.js (NNTP) and 822header.js (IMAP) synthesize a Content-Type header field for a message that has none stored, and asserted format=flowed whenever MSG_FIXED_FORMAT was clear. That flag is only ever set by an explicit "fixed" - a MIME format= parameter, a QWK "Format = fixed" header, an FTN \1FORMAT: kludge, or a local post made in raw-input mode - so a message that simply never said anything was reported as flowed. An omitted format parameter already means fixed (RFC 3676 4.1), so omit it rather than assert a wire format the text does not use: Synchronet message text is hard-wrapped and carries no trailing space on a soft break, and a conforming flowed reader also space-stuffs each line and reflows leading '>' quote blocks. The synthesized field is only generated when no Content-Type was stored, so a message that did arrive flowed keeps its own header field verbatim and is unaffected. Reported on DOVE-Net by ant: messages relayed over QWK with MIME excluded were served by NNTP as "charset=IBM437; format=flowed" with no trailing spaces anywhere in the body. mime_getpart() extracted the selected part's charset but passed NULL for auxattr, so only a single-part message's format= parameter could reach MSG_FIXED_FORMAT. Thread it through, so that - together with the preceding ";format=" typo fix in smb_parse_content_type() - a multi-part message whose text part declares format=fixed now round-trips. Co-Authored-By: Claude Opus 5 (1M context) --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .