• src/sbbs3/msgtoqwk.cpp

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sat Sep 19 15:48:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/9d568c97638f9aa2e3fe1b41
    Modified Files:
    src/sbbs3/msgtoqwk.cpp
    Log Message:
    Fix the MIME header stripping for QWK, which never actually ran

    The strip added in 3f2b039ecd (manage-38-week, 2026-02-03) is gated on "getmsgtxt_mode == GETMSGTXT_PLAIN", but getmsgtxt_mode is seeded with GETMSGTXT_ALL (= GETMSGTXT_TAILS = 1) a few lines earlier, so the value
    tested is always GETMSGTXT_ALL | GETMSGTXT_PLAIN (9) and never
    GETMSGTXT_PLAIN (8) alone. The equality never held, so the MIME header
    fields were never stripped. Test the bit instead.

    Reported by ant on DOVE-Net Tech Talk, who diagnosed it correctly: every QWK/REP packet we hand out still carries "Content-Type:
    multipart/alternative; boundary=XXXX" in HEADERS.DAT while the body has
    been flattened to the decoded text/plain part with no boundaries in it
    at all. The receiving system stores that header as an RFC822HEADER field (qwktomsg.cpp) and republishes it over NNTP, so a MIME-aware newsreader correctly sees a multipart message with zero parts and shows nothing.
    His dates match the code: MIME decoding became the QWK default in
    0bc7b3297e (cleaning-19-wish, 2026-01-31), and the TLDR newsletter posts
    in Tech Talk went bad on 2026-02-02.

    This is the same bug Accession reported in February, which 3f2b039ecd
    was meant to fix.

    Verified against sub dove-tech msg #1013: before, HEADERS.DAT emitted
    both "MIME-Version: 1.0" and the multipart Content-Type while the
    exported body (11055 bytes) contained no "--Q8ymwWEC" boundary; after,
    both header fields are stripped.

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

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