_  _    __    ___  __    ___  _____  _  _
 ( \( )  /__\  / __)(  )  / __)(  _  )( \( )
  )  (  /(__)\( (__  )(__( (__  )(_)(  )  (
 (_)\_)(__)(__)\___)(____)\___)(_____)(_)\_)

The History of Hacking  ·  May 31 – June 2, 2026  ·  Carolina Beach, NC

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

  • exec/load/xjs.js

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sun May 31 23:48:09 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c64622440386178e4a2f3a32
    Modified Files:
    exec/load/xjs.js
    Log Message:
    xjs: fix cold-cache recompile race in xjs_compile()

    Concurrent web requests on a cold .xjs.ssjs cache could observe the file mid-regeneration: it was file_remove()'d and recompiled in place, leaving
    it absent for the whole compile and racing concurrent load()/js.exec()
    into "Script file ... does not exist" and "creating ... No such file or directory" (errno 2) errors (seen on vert/cvs webv4: index.xjs,
    components, sidebar, pages/000-home).

    Compile to a unique temp file and atomically rename into place
    (atomic-replace on POSIX; on Win32, where rename won't overwrite, keep an up-to-date target and discard the redundant temp). Also use strict '<'
    for the staleness check so a same-second cache isn't recompiled.

    Race latent since ca76b74ba9 (2012).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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