From 941a6ebf52b1f95af9f11385d8b677da3d53a002 Mon Sep 17 00:00:00 2001 From: nkzawa Date: Thu, 21 Jan 2016 20:02:54 +0900 Subject: [PATCH] discard transport on server close --- lib/server.js | 2 +- lib/socket.js | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/server.js b/lib/server.js index ce1427139..a9b43b9ec 100644 --- a/lib/server.js +++ b/lib/server.js @@ -179,7 +179,7 @@ Server.prototype.close = function(){ debug('closing all open clients'); for (var i in this.clients) { if (this.clients.hasOwnProperty(i)) { - this.clients[i].close(); + this.clients[i].close(true); } } return this; diff --git a/lib/socket.js b/lib/socket.js index 350a0d8ec..57838f615 100644 --- a/lib/socket.js +++ b/lib/socket.js @@ -440,29 +440,32 @@ Socket.prototype.getAvailableUpgrades = function () { /** * Closes the socket and underlying transport. * + * @param {Boolean} optional, discard * @return {Socket} for chaining * @api public */ -Socket.prototype.close = function () { +Socket.prototype.close = function (discard) { if ('open' != this.readyState) return; this.readyState = 'closing'; if (this.writeBuffer.length) { - this.once('drain', this.closeTransport.bind(this)); + this.once('drain', this.closeTransport.bind(this, discard)); return; } - this.closeTransport(); + this.closeTransport(discard); }; /** * Closes the underlying transport. * + * @param {Boolean} discard * @api private */ -Socket.prototype.closeTransport = function () { +Socket.prototype.closeTransport = function (discard) { + if (discard) this.transport.discard(); this.transport.close(this.onClose.bind(this, 'forced close')); };