mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix(ext/websocket): don't throw exception when sending to closed socket
This commit is contained in:
parent
186b52731c
commit
be346642e3
3 changed files with 22 additions and 3 deletions
|
@ -330,10 +330,14 @@ class WebSocket extends EventTarget {
|
||||||
webidl.requiredArguments(arguments.length, 1, prefix);
|
webidl.requiredArguments(arguments.length, 1, prefix);
|
||||||
data = webidl.converters.WebSocketSend(data, prefix, "Argument 1");
|
data = webidl.converters.WebSocketSend(data, prefix, "Argument 1");
|
||||||
|
|
||||||
if (this[_readyState] !== OPEN) {
|
if (this[_readyState] === CONNECTING) {
|
||||||
throw new DOMException("'readyState' not OPEN", "InvalidStateError");
|
throw new DOMException("'readyState' not OPEN", "InvalidStateError");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this[_readyState] !== OPEN) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this[_sendQueue].length === 0) {
|
if (this[_sendQueue].length === 0) {
|
||||||
// Fast path if the send queue is empty, for example when only synchronous
|
// Fast path if the send queue is empty, for example when only synchronous
|
||||||
// data is being sent.
|
// data is being sent.
|
||||||
|
|
|
@ -806,3 +806,18 @@ Deno.test("Close connection", async () => {
|
||||||
await server.finished;
|
await server.finished;
|
||||||
conn.close();
|
conn.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Deno.test("send to a closed socket", async () => {
|
||||||
|
const { promise, resolve } = Promise.withResolvers<void>();
|
||||||
|
const ws = new WebSocket("ws://localhost:4242");
|
||||||
|
const blob = new Blob(["foo"]);
|
||||||
|
ws.onerror = () => fail();
|
||||||
|
ws.onopen = () => {
|
||||||
|
ws.close();
|
||||||
|
ws.send(blob);
|
||||||
|
};
|
||||||
|
ws.onclose = () => {
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
await promise;
|
||||||
|
});
|
||||||
|
|
|
@ -11518,10 +11518,10 @@
|
||||||
"006.html?default": true,
|
"006.html?default": true,
|
||||||
"006.html?wpt_flags=h2": false,
|
"006.html?wpt_flags=h2": false,
|
||||||
"006.html?wss": false,
|
"006.html?wss": false,
|
||||||
"007.html?default": false,
|
"007.html?default": true,
|
||||||
"007.html?wpt_flags=h2": false,
|
"007.html?wpt_flags=h2": false,
|
||||||
"007.html?wss": false,
|
"007.html?wss": false,
|
||||||
"008.html?default": false,
|
"008.html?default": true,
|
||||||
"008.html?wss": false,
|
"008.html?wss": false,
|
||||||
"009.html?default": {
|
"009.html?default": {
|
||||||
"ignore": true
|
"ignore": true
|
||||||
|
|
Loading…
Reference in a new issue