engine.io
Advanced tools
Comparing version 5.1.0 to 5.1.1
@@ -0,1 +1,9 @@ | ||
## [5.1.1](https://github.com/socketio/engine.io/compare/5.1.0...5.1.1) (2021-05-16) | ||
### Bug Fixes | ||
* properly close the websocket connection upon handshake error ([4360686](https://github.com/socketio/engine.io/commit/43606865e5299747cbb31f3ed9baf4567502a879)) | ||
# [5.1.0](https://github.com/socketio/engine.io/compare/5.0.0...5.1.0) (2021-05-04) | ||
@@ -2,0 +10,0 @@ |
@@ -239,3 +239,3 @@ const qs = require("querystring"); | ||
}); | ||
sendErrorMessage(req, res, errorCode, errorContext); | ||
abortRequest(res, errorCode, errorContext); | ||
return; | ||
@@ -248,3 +248,5 @@ } | ||
} else { | ||
this.handshake(req._query.transport, req); | ||
const closeConnection = (errorCode, errorContext) => | ||
abortRequest(res, errorCode, errorContext); | ||
this.handshake(req._query.transport, req, closeConnection); | ||
} | ||
@@ -278,5 +280,7 @@ }; | ||
* @param {Object} request object | ||
* @param {Function} closeConnection | ||
* | ||
* @api private | ||
*/ | ||
async handshake(transportName, req) { | ||
async handshake(transportName, req, closeConnection) { | ||
const protocol = req._query.EIO === "4" ? 4 : 3; // 3rd revision by default | ||
@@ -294,7 +298,3 @@ if (protocol === 3 && !this.opts.allowEIO3) { | ||
}); | ||
sendErrorMessage( | ||
req, | ||
req.res, | ||
Server.errors.UNSUPPORTED_PROTOCOL_VERSION | ||
); | ||
closeConnection(Server.errors.UNSUPPORTED_PROTOCOL_VERSION); | ||
return; | ||
@@ -317,3 +317,3 @@ } | ||
}); | ||
sendErrorMessage(req, req.res, Server.errors.BAD_REQUEST); | ||
closeConnection(Server.errors.BAD_REQUEST); | ||
return; | ||
@@ -349,3 +349,3 @@ } | ||
}); | ||
sendErrorMessage(req, req.res, Server.errors.BAD_REQUEST); | ||
closeConnection(Server.errors.BAD_REQUEST); | ||
return; | ||
@@ -398,3 +398,3 @@ } | ||
}); | ||
abortConnection(socket, errorCode, errorContext); | ||
abortUpgrade(socket, errorCode, errorContext); | ||
return; | ||
@@ -407,4 +407,4 @@ } | ||
// delegate to ws | ||
this.ws.handleUpgrade(req, socket, head, conn => { | ||
this.onWebSocket(req, conn); | ||
this.ws.handleUpgrade(req, socket, head, websocket => { | ||
this.onWebSocket(req, socket, websocket); | ||
}); | ||
@@ -420,4 +420,4 @@ }); | ||
*/ | ||
onWebSocket(req, socket) { | ||
socket.on("error", onUpgradeError); | ||
onWebSocket(req, socket, websocket) { | ||
websocket.on("error", onUpgradeError); | ||
@@ -429,3 +429,3 @@ if ( | ||
debug("transport doesnt handle upgraded requests"); | ||
socket.close(); | ||
websocket.close(); | ||
return; | ||
@@ -438,3 +438,3 @@ } | ||
// keep a reference to the ws.Socket | ||
req.websocket = socket; | ||
req.websocket = websocket; | ||
@@ -445,9 +445,9 @@ if (id) { | ||
debug("upgrade attempt for closed client"); | ||
socket.close(); | ||
websocket.close(); | ||
} else if (client.upgrading) { | ||
debug("transport has already been trying to upgrade"); | ||
socket.close(); | ||
websocket.close(); | ||
} else if (client.upgraded) { | ||
debug("transport had already been upgraded"); | ||
socket.close(); | ||
websocket.close(); | ||
} else { | ||
@@ -457,3 +457,3 @@ debug("upgrading existing transport"); | ||
// transport error handling takes over | ||
socket.removeListener("error", onUpgradeError); | ||
websocket.removeListener("error", onUpgradeError); | ||
@@ -471,5 +471,7 @@ const transport = new transports[req._query.transport](req); | ||
// transport error handling takes over | ||
socket.removeListener("error", onUpgradeError); | ||
websocket.removeListener("error", onUpgradeError); | ||
this.handshake(req._query.transport, req); | ||
const closeConnection = (errorCode, errorContext) => | ||
abortUpgrade(socket, errorCode, errorContext); | ||
this.handshake(req._query.transport, req, closeConnection); | ||
} | ||
@@ -479,3 +481,3 @@ | ||
debug("websocket error before upgrade"); | ||
// socket.close() not needed | ||
// websocket.close() not needed | ||
} | ||
@@ -566,5 +568,4 @@ } | ||
/** | ||
* Sends an Engine.IO Error Message | ||
* Close the HTTP long-polling request | ||
* | ||
* @param req - the request object | ||
* @param res - the response object | ||
@@ -577,3 +578,3 @@ * @param errorCode - the error code | ||
function sendErrorMessage(req, res, errorCode, errorContext) { | ||
function abortRequest(res, errorCode, errorContext) { | ||
const statusCode = errorCode === Server.errors.FORBIDDEN ? 403 : 400; | ||
@@ -595,3 +596,3 @@ const message = | ||
/** | ||
* Closes the connection | ||
* Close the WebSocket connection | ||
* | ||
@@ -605,3 +606,3 @@ * @param {net.Socket} socket | ||
function abortConnection(socket, errorCode, errorContext) { | ||
function abortUpgrade(socket, errorCode, errorContext = {}) { | ||
socket.on("error", () => { | ||
@@ -608,0 +609,0 @@ debug("ignoring error from closed connection"); |
{ | ||
"name": "engine.io", | ||
"version": "5.1.0", | ||
"version": "5.1.1", | ||
"description": "The realtime engine behind Socket.IO. Provides the foundation of a bidirectional connection between client and server", | ||
@@ -39,3 +39,3 @@ "main": "lib/engine.io.js", | ||
"eiows": "^3.3.0", | ||
"engine.io-client": "5.1.0", | ||
"engine.io-client": "5.1.1", | ||
"engine.io-client-v3": "npm:engine.io-client@3.5.0", | ||
@@ -42,0 +42,0 @@ "eslint": "^4.19.1", |
99166
2340