• src/sbbs3/sbbsecho.c

    From Steven Philley@1:103/705 to Git commit to main/sbbs/master on Thu Sep 10 01:17:29 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/4a76e2aa9a8336d7bda238ed
    Modified Files:
    src/sbbs3/sbbsecho.c
    Log Message:
    sbbsecho: summarize security violations at end of log
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to Git commit to main/sbbs/master on Thu Sep 10 01:17:29 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/094414dbc737da32df2062c9
    Modified Files:
    src/sbbs3/sbbsecho.c
    Log Message:
    Merge branch 'sbbsecho-security-violation-summary' into 'master'

    sbbsecho: summarize security violations at end of log

    Closes #1228

    See merge request main/sbbs!730
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Tue Sep 29 19:00:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/1debd362b1e3c690856c91b6
    Modified Files:
    src/sbbs3/sbbsecho.c
    Log Message:
    SBBSecho: export a message's declared charset as its CHRS

    A message posted with a MIME charset other than UTF-8 (for example from an
    NNTP client set to ISO-8859-1 or Windows-1252) was exported to FidoNet as "CHRS: CP437 2", so FTN readers mis-rendered its accented characters.

    Netmail and echomail export now share ftn_charset(). When a message has
    8-bit body text, no FTN charset and is not UTF-8, its MIME charset is
    mapped to the matching FTS-5003 identifier: LATIN-1/2/5/9, CP1250/1251/
    1252, CP850/852/866 (or CP437). Names are matched ignoring case, '-' and
    '_'. Charsets FTS-5003 has no identifier for still export as CP437.

    The configured origin line is CP437, so it is reduced to ASCII when the
    message goes out in one of those other 8-bit charsets. A message whose
    only 8-bit text is the origin line is still labeled CP437.

    Fixes #1259

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Tue Sep 29 19:00:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6c6d3dcbf9c50003d7ec9938
    Modified Files:
    src/sbbs3/sbbsecho.c
    Log Message:
    SBBSecho: give each generated NetMail a unique MSGID serial

    The MSGID of a NetMail message SBBSecho creates itself (AreaMgr replies,
    notify lists, etc.), added in 96712a1c35 (focuses-28-lives, 2021-11-12),
    used the current time in seconds as its serial. Messages created within
    the same second, such as the parts of a notify or area list split across several NetMails to one node, therefore shared a MSGID, which FTS-0009
    requires to be unique for the origin address, and which a receiving
    tosser checking NetMail for duplicates by MSGID could discard.

    The serial is now the current time, or one more than the last serial
    used, whichever is greater.

    Related: #1257

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Tue Oct 27 19:41:34 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/ad0cde5491bfdcf99dc292ab
    Modified Files:
    src/sbbs3/sbbsecho.c
    Log Message:
    sbbsecho: bundle full packets immediately; keep long runs from going stale

    A remote AreaFix RESCAN of every area could fill the disk: outbound
    packets that reached the maximum packet size were held in the temp
    directory until the end of the run, so a large export accumulated every exported message there, uncompressed (32 GB in the reported case). The ever-growing temp directory and outbound packet list also made each new
    packet slower to create, stretching the run to about 20 hours.

    - Bundle each outbound packet as soon as it is full, and drop it from
    the outbound packet list. pktname() no longer reuses a name within a
    run: a packet already moved into a bundle no longer exists on disk,
    and a same-named packet would replace it inside that bundle.

    - During long runs, refresh the time stamps of sbbsecho.bsy and the BSO
    node lock files (at most once a minute), so a run that outlasts
    BsyTimeout isn't considered stale and joined by a concurrent instance.

    - Check MinFreeDiskSpace for the temp and outbound directories before
    creating each new outbound packet, and stop gracefully (as on a
    termination signal) rather than writing until the disk is full.

    - When an echomail export stops early, save the export pointer of the
    last message processed instead of the sub-board's last message, so
    the remaining messages are exported by the next run rather than
    skipped. This also affected an export interrupted with Ctrl-C.

    Fixes #1301

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    --- SBBSecho 3.38-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)