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) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net