fix(telephony): ARI receive timeout 45s->3600s — the real false-abort root cause

Cancelling ClientWebSocket.ReceiveAsync via CancellationToken ABORTS the
socket (a half-read WS frame can't resume). The per-iteration
iterationCts.CancelAfter(WebSocketReceiveTimeoutSeconds) therefore aborted a
healthy idle ARI WebSocket every 45s (state=Aborted), not the keepalive pong
(proven: loop persisted after pong-timeout 15s->3600s). A large receive
timeout lets ReceiveAsync block harmlessly while the PBX is idle; real drops
still surface immediately as WebSocketException -> reconnect. Proper code fix
(stop using CancelAfter on the receive) tracked separately.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Andrew Stoltz
2026-06-14 13:03:14 -05:00
committed by Andrew Stoltz
parent de5c9f39fd
commit 7a86c40cf1

View File

@@ -65,7 +65,7 @@ data:
"MaxReconnectDelaySeconds": 60,
"WebSocketKeepAliveIntervalSeconds": 30,
"WebSocketKeepAliveTimeoutSeconds": 3600,
"WebSocketReceiveTimeoutSeconds": 45
"WebSocketReceiveTimeoutSeconds": 3600
},
"Sip": {
"Domain": "10.0.56.207",