From dfa9a6baa0a67e4f88a76ffa75567dd070b1ea91 Mon Sep 17 00:00:00 2001 From: Oleg Date: Mon, 10 Jul 2017 16:09:19 +0300 Subject: [PATCH 1/3] Move generateId to try-catch block --- lib/server.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/server.js b/lib/server.js index 09ab49ca0..53b377f81 100644 --- a/lib/server.js +++ b/lib/server.js @@ -291,11 +291,11 @@ Server.prototype.generateId = function (req) { */ Server.prototype.handshake = function (transportName, req) { - var id = this.generateId(req); - debug('handshaking client "%s"', id); try { + var id = this.generateId(req); + var transport = new transports[transportName](req); if ('polling' === transportName) { transport.maxHttpBufferSize = this.maxHttpBufferSize; @@ -310,7 +310,7 @@ Server.prototype.handshake = function (transportName, req) { transport.supportsBinary = true; } } catch (e) { - sendErrorMessage(req, req.res, Server.errors.BAD_REQUEST); + sendErrorMessage(req, req.res, e.message || Server.errors.BAD_REQUEST); return; } var socket = new Socket(id, this, transport, req); From 540946179e3c894ea57a44bfa32b977ef4930ce3 Mon Sep 17 00:00:00 2001 From: Oleg Meleshko Date: Mon, 10 Jul 2017 16:33:04 +0300 Subject: [PATCH 2/3] Removed trailing space --- lib/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index 53b377f81..598f573ae 100644 --- a/lib/server.js +++ b/lib/server.js @@ -295,7 +295,7 @@ Server.prototype.handshake = function (transportName, req) { try { var id = this.generateId(req); - + var transport = new transports[transportName](req); if ('polling' === transportName) { transport.maxHttpBufferSize = this.maxHttpBufferSize; From 95e97a24e2f72202c376b6c4b473d8f73181a5e5 Mon Sep 17 00:00:00 2001 From: Oleg Meleshko Date: Mon, 10 Jul 2017 16:49:10 +0300 Subject: [PATCH 3/3] Handling generateId exceptions separately to isolate problems related to ID generation --- lib/server.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/server.js b/lib/server.js index 598f573ae..38336d1b7 100644 --- a/lib/server.js +++ b/lib/server.js @@ -291,11 +291,18 @@ Server.prototype.generateId = function (req) { */ Server.prototype.handshake = function (transportName, req) { - debug('handshaking client "%s"', id); + var id; try { - var id = this.generateId(req); + id = this.generateId(req); + } catch (e) { + sendErrorMessage(req, req.res, e.message || Server.errors.BAD_REQUEST); + return; + } + debug('handshaking client "%s"', id); + + try { var transport = new transports[transportName](req); if ('polling' === transportName) { transport.maxHttpBufferSize = this.maxHttpBufferSize; @@ -310,7 +317,7 @@ Server.prototype.handshake = function (transportName, req) { transport.supportsBinary = true; } } catch (e) { - sendErrorMessage(req, req.res, e.message || Server.errors.BAD_REQUEST); + sendErrorMessage(req, req.res, Server.errors.BAD_REQUEST); return; } var socket = new Socket(id, this, transport, req);