From a978d0f7d3aba0bdc827aa9e248443927c3ba4ed Mon Sep 17 00:00:00 2001 From: Khafra Date: Thu, 16 May 2024 16:24:00 -0400 Subject: [PATCH] fixup --- lib/web/websocket/connection.js | 2 +- lib/web/websocket/websocket.js | 15 ++++++++++++++- test/autobahn/client.js | 12 +++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/web/websocket/connection.js b/lib/web/websocket/connection.js index ddbe30b40e0..5d732fcc4b5 100644 --- a/lib/web/websocket/connection.js +++ b/lib/web/websocket/connection.js @@ -92,7 +92,7 @@ function establishWebSocketConnection (url, protocols, client, ws, onEstablish, // 9. Let permessageDeflate be a user-agent defined // "permessage-deflate" extension header value. // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 - const permessageDeflate = 'permessage-deflate' + const permessageDeflate = options.node?.['client-extensions'] ?? '' // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to // request’s header list. diff --git a/lib/web/websocket/websocket.js b/lib/web/websocket/websocket.js index aa197e6b16c..a0e66f38d66 100644 --- a/lib/web/websocket/websocket.js +++ b/lib/web/websocket/websocket.js @@ -549,6 +549,14 @@ webidl.converters['DOMString or sequence'] = function (V, prefix, arg return webidl.converters.DOMString(V, prefix, argument) } +webidl.converters.WebSocketInitNodeOptions = webidl.dictionaryConverter([ + { + key: 'client-extensions', + converter: webidl.converters.DOMString, + defaultValue: () => '' + } +]) + // This implements the proposal made in https://github.com/whatwg/websockets/issues/42 webidl.converters.WebSocketInit = webidl.dictionaryConverter([ { @@ -558,12 +566,17 @@ webidl.converters.WebSocketInit = webidl.dictionaryConverter([ }, { key: 'dispatcher', - converter: (V) => V, + converter: webidl.converters.any, defaultValue: () => getGlobalDispatcher() }, { key: 'headers', converter: webidl.nullableConverter(webidl.converters.HeadersInit) + }, + { + key: 'node', + converter: webidl.converters.WebSocketInitNodeOptions, + defaultValue: () => ({}) } ]) diff --git a/test/autobahn/client.js b/test/autobahn/client.js index 41bf1d61063..a2c74522c71 100644 --- a/test/autobahn/client.js +++ b/test/autobahn/client.js @@ -6,19 +6,25 @@ let currentTest = 1 let testCount const autobahnFuzzingserverUrl = process.env.FUZZING_SERVER_URL || 'ws://localhost:9001' +const options = { + node: { + 'client-extensions': 'permessage-deflate' + } +} function nextTest () { let ws if (currentTest > testCount) { - ws = new WebSocket(`${autobahnFuzzingserverUrl}/updateReports?agent=undici`) + ws = new WebSocket(`${autobahnFuzzingserverUrl}/updateReports?agent=undici`, options) return } console.log(`Running test case ${currentTest}/${testCount}`) ws = new WebSocket( - `${autobahnFuzzingserverUrl}/runCase?case=${currentTest}&agent=undici` + `${autobahnFuzzingserverUrl}/runCase?case=${currentTest}&agent=undici`, + options ) ws.addEventListener('message', (data) => { ws.send(data.data) @@ -32,7 +38,7 @@ function nextTest () { }) } -const ws = new WebSocket(`${autobahnFuzzingserverUrl}/getCaseCount`) +const ws = new WebSocket(`${autobahnFuzzingserverUrl}/getCaseCount`, options) ws.addEventListener('message', (data) => { testCount = parseInt(data.data) })