• exec/load/salib.js

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Saturday, June 27, 2026 03:03:33
    https://gitlab.synchro.net/main/sbbs/-/commit/c4b60eea8f3ae6a35b927131
    Modified Files:
    exec/load/salib.js
    Log Message:
    salib.js: send spamd message from a single read, not file_size()+sendfile()

    The Content-length announced to spamd was computed from file_size() while
    the body was delivered separately via sendfile() -- two operations on the
    same temp file. When that file lives on a soft network mount (e.g. a CIFS loopback), a stat and a later send can disagree under load: the body short-reads while the size call already returned the full length, so spamd rejects the message with "Content-Length mismatch ... protocol error 76"
    and spamc.js passes it through unscanned.

    Read the file once into memory and derive Content-length from the bytes actually sent, so the two can never disagree (a short read just scans a
    shorter message rather than erroring). spamc.js already caps message size,
    so reading into memory is bounded.

    Surfaced after enabling mailproc ProcessDNSBL processing tripled the
    volume flowing through spamc.js.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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