__                 _ _                _
  / _| ___   ___   __| | |__   __ _ _ __| | __
 | |_ / _ \ / _ \ / _` | '_ \ / _` | '__| |/ /
 |  _| (_) | (_) | (_| | |_) | (_| | |  |   <
 |_|  \___/ \___/ \__,_|_.__/ \__,_|_|  |_|\_\

A personal BBS  ·  Missoula, Montana  ·  formerly NaClCON BBS

Connect from your terminal: telnet naclconbbs.net 23  |  ssh naclconbbs.net -p 2222

  • src/sbbs3/getnode.cpp

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Jul 6 20:44:06 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/efd77fec752a8affc9918b48
    Modified Files:
    src/sbbs3/getnode.cpp
    Log Message:
    getnodedat(): don't leak the node.dab record lock on a seek failure

    Restructure the retry loop to seek before locking (matching the C
    getnodedat() in userdat.c): previously a seeknodedat() failure after a successful lock() continued the loop without unlocking, so on Windows
    (where locking an already-held region fails) one transient seek failure poisoned all remaining retries. Also drop the pointless unlock() after
    a *failed* lock() and only unlock on a short read when we actually
    locked the record. Plus an uncrustify whitespace pass over the file.

    Noticed while reviewing the node status reset retry of 46ebc4f26 (desk-23-lamp). Validated against an isolated scratch terminal server: connect/disconnect exercises the locked getnodedat()/putnodedat() path
    and the node record returns to waiting-for-connection with no NODE.DAB
    errors logged.

    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

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