summaryrefslogtreecommitdiff
path: root/ext/websocket/01_websocket.js
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-02-13 20:28:32 +0530
committerGitHub <noreply@github.com>2023-02-13 14:58:32 +0000
commit9e3d433249b9259e3a04b4f68563a41455ac7efc (patch)
tree2e6ce78b712ae143f988befd0e9f737b99cb4932 /ext/websocket/01_websocket.js
parentf80a1fa7e9f0a865a023be26cd76614faa030433 (diff)
fix(ext/websocket): extra ws pongs sent (#17762)
Fixes https://github.com/denoland/deno/issues/17761 Tugstenite already sends a pong for a recieved ping. This automatically happens when the socket read is being driven. From https://github.com/snapview/tokio-tungstenite/issues/88 > You need to read from the read-side of the socket so that it receives/handles pings, and on the next write it would then send the corresponding pong. Here's the source: https://github.com/snapview/tungstenite-rs/blob/e1033afd959bb7abfcbc181033b8326f8a40562b/src/protocol/mod.rs#L374-L380 ```rust // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in // response, unless it already received a Close frame. It SHOULD // respond with Pong frame as soon as is practical. (RFC 6455) if let Some(pong) = self.pong.take() { trace!("Sending pong reply"); self.send_one_frame(stream, pong)?; } ``` WIth this patch, all Autobahn tests from 1-8 pass. Fixed cases: 2.1, 2.2, 2.3, 2.4, 2.6, 2.9, 2.10, 2.11, 5.6, 5.7, 5.8, 5.19, 5.20 To run the test yourself, follow https://www.notion.so/denolandinc/Autobahn-WebSocket-testsuite-723a86f450ce4823b4ef9cb3dc4c7869?pvs=4
Diffstat (limited to 'ext/websocket/01_websocket.js')
-rw-r--r--ext/websocket/01_websocket.js6
1 files changed, 0 insertions, 6 deletions
diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js
index 45e3f00e7..00b3e5775 100644
--- a/ext/websocket/01_websocket.js
+++ b/ext/websocket/01_websocket.js
@@ -433,12 +433,6 @@ class WebSocket extends EventTarget {
this.dispatchEvent(event);
break;
}
- case "ping": {
- core.opAsync("op_ws_send", this[_rid], {
- kind: "pong",
- });
- break;
- }
case "pong": {
this[_serverHandleIdleTimeout]();
break;