From 1b22b53fe84c9b1ea1925de82f716ceb588949b6 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Thu, 2 Feb 2017 18:20:26 -0800 Subject: [PATCH] fix tests: wait for socket to send final responses --- lib/server/swarm.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/server/swarm.js b/lib/server/swarm.js index 0b39918..d2e1c5f 100644 --- a/lib/server/swarm.js +++ b/lib/server/swarm.js @@ -14,15 +14,18 @@ function Swarm (infoHash, server) { maxAge: server.peersCacheTtl || 20 * 60 * 1000 // 20 minutes }) - // When a peer is evicted from the LRU cache, if it's a websocket peer, - // close the websocket. + // When a websocket peer is evicted from the LRU cache, close the websocket + // after a short timeout period. We wait 1s so the server has a chance to send + // a response to 'stopped' events, which remove the peer and cause an eviction. this.peers.on('evict', function (data) { var peer = data.value if (peer.socket) { - try { - peer.socket.close() - peer.socket = null - } catch (err) {} + setTimeout(function () { + try { + peer.socket.close() + peer.socket = null + } catch (err) {} + }, 1000) } }) }