diff options
| author | Adam Soltys <[email protected]> | 2026-06-14 12:44:19 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-06-17 07:47:50 -0700 |
| commit | 3d2a980971b59cdd2a4ea41b2da51f370eee6b75 (patch) | |
| tree | 186f51d56493d7ae8c6c19aff859d7b336fa11e0 /scripts | |
| parent | b83d5dfc6dc27b7af1fbc723b61e017fd9caf7d7 (diff) | |
| download | coinos-server-3d2a980971b59cdd2a4ea41b2da51f370eee6b75.tar.gz coinos-server-3d2a980971b59cdd2a4ea41b2da51f370eee6b75.zip | |
ln: time out short-lived RPCs so a hung cl reconnects without restart
Port of master a664af99. 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 — nothing throws, the reconnect-on-error path
never fires, and only an app restart recovers. Wrap short-lived calls in a
30s Promise.race timeout (matching lib/health.ts); a timeout rejects with
ETIMEDOUT, now part of isSocketDied, so the client is dropped and the next
call reconnects. Long-polls, in-flight payments (pay/xpay/sendpay/keysend)
and bolt12 round-trips are exempt to avoid leaked debits.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions
