@@ -491,7 +491,7 @@ Server.prototype._onWebSocketRequest = function (socket, opts, params) {
491491 if ( ! socket . peerId ) socket . peerId = params . peer_id // as hex
492492
493493 self . _onRequest ( params , function ( err , response ) {
494- if ( self . destroyed ) return
494+ if ( self . destroyed || socket . destroyed ) return
495495 if ( err ) {
496496 socket . send ( JSON . stringify ( {
497497 action : params . action === common . ACTIONS . ANNOUNCE ? 'announce' : 'scrape' ,
@@ -545,6 +545,7 @@ Server.prototype._onWebSocketRequest = function (socket, opts, params) {
545545 debug ( 'got answer %s from %s' , JSON . stringify ( params . answer ) , params . peer_id )
546546
547547 self . getSwarm ( params . info_hash , function ( err , swarm ) {
548+ if ( self . destroyed ) return
548549 if ( err ) return self . emit ( 'warning' , err )
549550 if ( ! swarm ) {
550551 return self . emit ( 'warning' , new Error ( 'no swarm with that `info_hash`' ) )
@@ -587,6 +588,7 @@ Server.prototype._onWebSocketSend = function (socket, err) {
587588Server . prototype . _onWebSocketClose = function ( socket ) {
588589 var self = this
589590 debug ( 'websocket close %s' , socket . peerId )
591+ socket . destroyed = true
590592
591593 if ( socket . peerId ) {
592594 socket . infoHashes . slice ( 0 ) . forEach ( function ( infoHash ) {
0 commit comments