From a1ff1a453c309c2f14c64ec31a3c43ef784781e2 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Tue, 25 Jun 2024 06:39:02 -0700 Subject: fix(ext/websocket): drop connection when close frame not ack (#24301) Fixes #24292 --- ext/websocket/01_websocket.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ext/websocket/01_websocket.js') diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js index afe543da5..60580a56c 100644 --- a/ext/websocket/01_websocket.js +++ b/ext/websocket/01_websocket.js @@ -424,6 +424,18 @@ class WebSocket extends EventTarget { const rid = this[_rid]; while (this[_readyState] !== CLOSED) { const kind = await op_ws_next_event(rid); + /* close the connection if read was cancelled, and we didn't get a close frame */ + if ( + (this[_readyState] == CLOSING) && + kind <= 3 && this[_role] !== CLIENT + ) { + this[_readyState] = CLOSED; + + const event = new CloseEvent("close"); + this.dispatchEvent(event); + core.tryClose(rid); + break; + } switch (kind) { case 0: { -- cgit v1.2.3