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