https://gitlab.synchro.net/main/sbbs/-/commit/4f7a9170bdecf787f74abc50
Modified Files:
src/sbbs3/qwk.cpp qwkjob.cpp qwkjob.h
Log Message:
qwkjob: take over a QWK lock whose holder on this machine has ended
A QWK lock file left by a crashed or killed process on a POSIX host stayed
in force until it aged out: an hour for a user lock and 12 hours for a hub lock, which the event thread holds through each call-out and which every
hub import needs. One crash mid call-out stopped that hub's call-outs and imports on every host for up to 12 hours.
A lock's text now names its holder process: "<host name> (<machine> pid <pid>)", the machine being gethostname() as in the job temp dir names.
When a lock is busy and its holder is a process of this machine that is no longer running, qwkjob_open_lock() removes the lock and takes it, logging
"Took over <lock>, left by an ended process: <holder>". A holder on another machine, a running one, or a lock written by an older version (which names
no process) is still waited out until max age, as before.
All QWK job locks (user, hub and <rep>.lock) and the terminal's QWK
transfer lock go through qwkjob_open_lock().
Co-Authored-By: Claude Opus 5.5 <
noreply@anthropic.com>
--- SBBSecho 3.38-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)