• src/sbbs3/ftpsrvr.cpp 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/55cccc749c640d8754844454
    Modified Files:
    src/sbbs3/ftpsrvr.cpp web/root/qwk.ssjs
    Log Message:
    qwkjob: name queued-REP staging files by host and server

    A REP that cannot be imported at once is staged beside its final name
    in data/file/ and renamed into place, so the event thread's *.rep sweep
    never sees a half-written packet. data/file/ is shared by every BBS
    host, and FTP and Web socket numbers come from separate processes (and
    hosts), so a name built from the user and socket number alone could
    collide.

    Both servers now stage as <user#>.<host>.<srv><sock>.tmp with srv "ftp"
    or "web", the host being the name the server already uses for lock
    ownership, reduced to filename-safe characters. The name matches
    neither the *.rep sweep (Windows tests 8.3 short names too, so the web
    staging name no longer ends in .reptmp) nor the pack's
    <user#>.<host>.<pid>.tmp shape.

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • 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/c5812494ff3cf11a510ddb4b
    Modified Files:
    src/sbbs3/ftpsrvr.cpp web/root/qwk.ssjs
    Log Message:
    Name received REP files in temp/rep/ by host, server and process

    The FTP server received an uploaded REP as temp/rep/<user#>.<sock>.rep and qwk.ssjs as temp/rep/<user#>.<client.socket>.rep. Both servers default
    their temp directory to ../temp/, the Web server may run as a separate
    process (or on another host sharing the install), and socket numbers are
    per process, so two uploads for one user could write the same file; in
    qwk.ssjs client.socket even reads 0.

    The FTP server now uses <user#>.<host>.ftp<pid>.<sock>.rep, with the host
    name made file-name safe as for its data/file/ staging names. qwk.ssjs
    has no process ID available, so it uses
    <user#>.<host>.web<hex-time><32-bit random>.<sock>.rep, and logs the path
    with the qwk_unpack() result.

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

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