• src/sbbs3/js_user.cpp

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Wed Jan 7 03:57:55 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d5013944cd36f9bdda384638
    Modified Files:
    src/sbbs3/js_user.cpp
    Log Message:
    Fix new crashing bug introduced in previous commit to this js_user.cpp

    The first argument to update_terminal() is in fact an sbbs_t*, not an scfg_t*

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Wed Jan 7 03:57:55 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6e192c0f469e85b24b0acf71
    Modified Files:
    src/sbbs3/js_user.cpp
    Log Message:
    Slight optimization to User property setter

    Don't call update_terminal() for *every* change to User.settings (but rather only terminal-related flag changes).

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sat Jan 10 14:50:45 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7dc498c54161b7e6a712bf9a
    Modified Files:
    src/sbbs3/js_user.cpp
    Log Message:
    Make User.newscan_date a non-enumerable (alias) property again

    Regression in commit c4bf51aac981bff5086e

    Messed up User properties descritions in JSDOCS

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun Jan 18 21:27:34 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d41cd2165be94ca26f985a1e
    Modified Files:
    src/sbbs3/js_user.cpp
    Log Message:
    Add User.is_guest convenience property

    Easier to use/read than checking for the 'G' restriction, but same outcome

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Wed Nov 11 22:55:01 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/bc5a11bb62e2e9068c1f2c97
    Modified Files:
    src/sbbs3/js_user.cpp
    Log Message:
    js: don't keep user.tab open for the life of a User object

    On Windows, with user.tab on an SMB share served by Samba, a shared
    byte-range lock can stay on the server after it is unlocked: when two
    handles hold a shared lock on the same record and the first to lock is
    the first to unlock, that handle's lock remains until the handle is
    closed. Readers still get the record; every exclusive lock on it fails.

    The User object kept a read-only user.tab descriptor open until it was finalized (4176df9717, 2018-06-07), and its reads have taken shared
    locks since aa673afdf1 (2026-06-02). When its descriptor was the one
    left holding the lock, the record stayed locked against writers for as
    long as the script's context lived. In the web server that includes
    the session's own http_logoff(), which runs before the context is
    destroyed.

    Symptom: when one webv4 user's requests overlapped, their logins and
    logouts each retried lockuserdat() for about 106 seconds and logged
    "!Error -104 writing user data for user #N" or "!ERROR -104 in
    logoutuserdat", and every page that user requested stalled for that
    long.

    Open, read and close the user base for each uncached read instead, so
    a lock left behind lasts no longer than the read. The object still
    caches the record, so this is one more open per re-read, not per
    property. User.close() remains and does nothing.

    Compiled with MSVC only.

    Fixes #1342

    Co-Authored-By: Claude Fable 5.2 <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 Fri Nov 13 20:36:22 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/4922c647e7406de6519fc120
    Modified Files:
    src/sbbs3/js_user.cpp
    Log Message:
    js: document User.close() as a backward-compatibility no-op

    Since bc5a11bb62 (bacteria-20-what, 2026-11-11) a User object no longer
    holds user.tab open, so close() has nothing to do. Say so in its jsdocs description, rather than describing a file it no longer closes, and bump
    its version to 3.22 to mark the change.

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

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