BBS:      TELESC.NET.BR
Assunto:  JS http.js: 2nd HTTPS request to same host fails with 'Unable to read
De:       Deuc¨
Data:     Mon, 25 May 2026 20:43:37 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/issues/1148#note_9065

Not reproducible, and the diagnosis is wrong. Closing as invalid.

## Doesn't reproduce

I ran the supplied repro verbatim against a live install and got three
successful HTTPS calls  `rc=200` on call 1, 2, and 3. No
"Unable to read status" error.

## The hypothesis is incorrect

The report claims `sock.ssl_session = true` caches a per-host TLS session
that becomes stale on the second connection. That's not what
`ssl_session` does. Setting it triggers `cryptCreateSession()` for a
brand-new `CRYPT_SESSION_TLS` on this specific socket  see
`src/sbbs3/js_socket.cpp:2348` (`SOCK_PROP_SSL_SESSION` handler). There
is no per-host TLS session cache in this code path.

Each `HTTPRequest.Get()` call also opens a fresh TCP connection
(`exec/load/http.js:113-127`  closes any previous `this.sock`, then
calls `new Socket()` and `connect()`). The default headers include
`Connection: close` (`http.js:35`), so no keepalive or session
resumption is attempted on the wire either.

## The bug, if real, would break ACME

`exec/load/acmev2.js` is the built-in Let's Encrypt client. It reuses a
single `HTTPRequest` to issue many HTTPS calls to
`acme-v02.api.letsencrypt.org` during cert issuance/renewal. If the
second HTTPS call to a given host always failed, every sysop relying on
the bundled ACME client would have a broken renewal  which isn't what
we see in the field. `exec/init-fidonet.js` similarly pulls multiple
HTTPS URLs in a loop without issue.

## Unverifiable artifacts

The "Impact" section cites `chat_llm.js`, `data/gitissue.jsonl`, and
`data/gitpush.jsonl`. None of these exist in the Synchronet tree or are
produced by any Synchronet component, so the stated impact and
workaround can't be evaluated.

If a real second-HTTPS-call failure does show up against a specific
host, please reopen with: the actual URL, the cryptlib log lines from
that run (`data/error.log` and the per-day terminal-server log under
`data/logs/`), and a single end-to-end transcript of jsexec running the
repro  not a hypothesis.
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]