mirror of
https://github.com/socketio/socket.io.git
synced 2026-04-30 03:00:39 -04:00
server: catch websocket errors before upgrade
This commit is contained in:
@@ -343,6 +343,8 @@ Server.prototype.handleUpgrade = function(req, socket, upgradeHead){
|
||||
*/
|
||||
|
||||
Server.prototype.onWebSocket = function(req, socket){
|
||||
socket.on('error', onUpgradeError);
|
||||
|
||||
if (!transports[req._query.transport].prototype.handlesUpgrades) {
|
||||
debug('transport doesnt handle upgraded requests');
|
||||
socket.close();
|
||||
@@ -368,6 +370,10 @@ Server.prototype.onWebSocket = function(req, socket){
|
||||
socket.close();
|
||||
} else {
|
||||
debug('upgrading existing transport');
|
||||
|
||||
// transport error handling takes over
|
||||
socket.removeListener('error', onUpgradeError);
|
||||
|
||||
var transport = new transports[req._query.transport](req);
|
||||
if (req._query && req._query.b64) {
|
||||
transport.supportsBinary = false;
|
||||
@@ -378,8 +384,16 @@ Server.prototype.onWebSocket = function(req, socket){
|
||||
client.maybeUpgrade(transport);
|
||||
}
|
||||
} else {
|
||||
// transport error handling takes over
|
||||
socket.removeListener('error', onUpgradeError);
|
||||
|
||||
this.handshake(req._query.transport, req);
|
||||
}
|
||||
|
||||
function onUpgradeError(){
|
||||
debug('websocket error before upgrade');
|
||||
// socket.close() not needed
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user