diff --git a/lib/socket.js b/lib/socket.js index 177b25c69..376e3c1d7 100644 --- a/lib/socket.js +++ b/lib/socket.js @@ -208,7 +208,6 @@ Socket.prototype.maybeUpgrade = function (transport) { self.clearTransport(); self.setTransport(transport); self.emit('upgrade', transport); - self.setPingTimeout(); self.flush(); if (self.readyState === 'closing') { transport.close(function () { diff --git a/test/server.js b/test/server.js index d34f2f235..4954f8ca3 100644 --- a/test/server.js +++ b/test/server.js @@ -1092,6 +1092,24 @@ describe('server', function () { }); }); + it('should not timeout after an upgrade', done => { + const opts = { pingInterval: 200, pingTimeout: 20 }; + const engine = listen(opts, port => { + const socket = new eioc.Socket('ws://localhost:%d'.s(port)); + socket.on('open', () => { + setTimeout(() => { + socket.removeListener('close'); + engine.close(); + socket.close(); + done(); + }, 500); + }); + socket.on('close', () => { + done(new Error('should not happen')); + }); + }); + }); + it('should not crash when messing with Object prototype', function (done) { Object.prototype.foo = 'bar'; // eslint-disable-line no-extend-native var engine = listen({ allowUpgrades: true }, function (port) {