From 5627f829460cc100fa5b3f5048d9cb378266c51f Mon Sep 17 00:00:00 2001 From: Ben Falconer Date: Tue, 21 Jan 2020 18:04:30 +0000 Subject: [PATCH] [fix] Allow close code 1014 IANA has assigned 1014 as "Bad Gateway" https://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent ws support for 1012, and 1013 was added in b58f688bf0fa0e87a3cef87c2f5d01bf43590668 --- lib/validation.js | 2 +- test/websocket.test.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/validation.js b/lib/validation.js index 479a7db08..32db5a570 100644 --- a/lib/validation.js +++ b/lib/validation.js @@ -21,7 +21,7 @@ try { exports.isValidStatusCode = (code) => { return ( (code >= 1000 && - code <= 1013 && + code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006) || diff --git a/test/websocket.test.js b/test/websocket.test.js index 4caf57fcf..b5b265248 100644 --- a/test/websocket.test.js +++ b/test/websocket.test.js @@ -1532,6 +1532,19 @@ describe('WebSocket', () => { wss.on('connection', (ws) => ws.close(1013)); }); + it('allows close code 1014', (done) => { + const wss = new WebSocket.Server({ port: 0 }, () => { + const ws = new WebSocket(`ws://localhost:${wss.address().port}`); + + ws.on('close', (code) => { + assert.strictEqual(code, 1014); + wss.close(done); + }); + }); + + wss.on('connection', (ws) => ws.close(1014)); + }); + it('does nothing if `readyState` is `CLOSED`', (done) => { const wss = new WebSocket.Server({ port: 0 }, () => { const ws = new WebSocket(`ws://localhost:${wss.address().port}`);