aboutsummaryrefslogtreecommitdiffstats
path: root/docker/base.Dockerfile
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-05-31 23:28:12 -0700
committerAdam Soltys <[email protected]>2026-05-31 23:28:12 -0700
commita664af99dfee8267a960fd22cbab852681198de2 (patch)
tree31daf8030a9cb8929dab4d561d579f6c042afb5f /docker/base.Dockerfile
parent7841b2d61830f13260e46d24ce69f24b2dbcea29 (diff)
downloadcoinos-server-a664af99dfee8267a960fd22cbab852681198de2.tar.gz
coinos-server-a664af99dfee8267a960fd22cbab852681198de2.zip
ln: time out short-lived RPCs so a hung cl reconnects without restart
A unix-domain RPC socket has no TCP keepalive, so if cl goes unresponsive while the socket stays open (zombie/half-open), an awaited call hangs forever — the "stuck spinner past /pay/bob, no error" symptom. Nothing threw, so the existing reconnect-on-error path never fired and only an app restart recovered it. Wrap short-lived calls in a 30s Promise.race timeout (matching health.ts). A timeout rejects with ETIMEDOUT, now part of isSocketDied, so the client is dropped and the next call reconnects — no process restart. Long-polls (waitanyinvoice et al), in-flight payments (pay/xpay/sendpay/keysend), and bolt12 round-trips (fetchinvoice/ sendinvoice/offer) are exempt: timing those out client-side would risk leaked debits or break intentional blocking. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Diffstat (limited to 'docker/base.Dockerfile')
0 files changed, 0 insertions, 0 deletions