Subj : exec/letsyncrypt.js exec/load/acmev2.js To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Tue Sep 15 2026 23:42:50 https://gitlab.synchro.net/main/sbbs/-/commit/ceb2e8178087c8c5d603073e Modified Files: exec/letsyncrypt.js exec/load/acmev2.js Log Message: letsyncrypt: name the failing domain, stop destroying the certificate A failed authorization was silently discarded. authorize_order() caught everything poll_authorization() threw but re-raised only the timeout string, so a domain that failed http-01 validation simply fell out of the loop. The run carried on to finalize_order(), Let's Encrypt answered orderNotReady, and the sysop saw finalize_order returned 403, not 200 with nothing to say which of a dozen names was at fault. Collect the failures instead, log one line each, and throw naming every identifier that failed. poll_authorization() now names the identifier and quotes the server's own explanation through a new challenge_error() helper: Authorization failed for example.com (http-01): 192.0.2.1: Fetching http://example.com/.well-known/acme-challenge/...: Timeout during connect (likely firewall problem) A timeout still ends the run rather than waiting out every remaining identifier. The keyset is now built in ssl.cert.new and renamed into place. It was being created directly over ssl.cert, which had to be deleted first, so anything that went wrong in between (cryptlib declining to write the keyset, a full disk) destroyed the working certificate and the only copy of its private key, leaving TLS to fail at the next recycle with nothing to roll back to. rename() does not replace an existing file on Windows, so the old certificate is moved aside rather than deleted, and put back if the second rename fails. at_least_a_third() no longer lets an unreadable ssl.cert escape as an uncaught exception. It now means "renew", which is the one thing that can repair the situation; a truncated keyset used to wedge every later run of the script. Co-Authored-By: Claude Opus 5 (1M context) --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .