• web/root/qwk.ssjs

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Oct 26 00:09:03 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d7466c661285f12ae3af592c
    Modified Files:
    web/root/qwk.ssjs
    Log Message:
    qwk.ssjs: queue each REP upload under names of its own

    When a REP upload could not be imported at once (the user's QWK job lock
    busy, the job slots full, or a failure unrelated to the packet),
    queue_rep() staged it as data/file/<user#>.<host>.web<client.socket>.tmp
    and renamed it to <user#>.rep, or <user#>.<hex time>.rep when that
    existed. client.socket reads 0 in qwk.ssjs, so concurrent uploads for one
    user on one host wrote the same staging file; and the queue name was
    checked and then renamed onto, which replaces an existing file on POSIX.
    Two such uploads queued one file: one REP was lost and the other could be posted twice.

    The staging and queue names now carry the token that already names the
    received file in temp/rep/ (hex time and 32 random bits): <user#>.<host>.web<token>.tmp, renamed to <user#>.<token>.rep. The event thread's sweep imports any data/file/*.rep by its leading user number, in
    this and older versions.

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

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