diff --git a/lib/server.js b/lib/server.js index 60595a8a..cc8bd88d 100644 --- a/lib/server.js +++ b/lib/server.js @@ -12,11 +12,16 @@ function Server (torrent, opts = {}) { const sockets = [] const pendingReady = [] let closed = false + const _listen = server.listen + const _close = server.close - server.on('connection', onConnection) - server.on('request', onRequest) + server.listen = (...args) => { + closed = false + server.on('connection', onConnection) + server.on('request', onRequest) + _listen.apply(server, args) + } - const _close = server.close server.close = cb => { closed = true server.removeListener('connection', onConnection) @@ -25,7 +30,6 @@ function Server (torrent, opts = {}) { const onReady = pendingReady.pop() torrent.removeListener('ready', onReady) } - torrent = null _close.call(server, cb) } @@ -38,6 +42,7 @@ function Server (torrent, opts = {}) { if (!cb) cb = () => {} if (closed) process.nextTick(cb) else server.close(cb) + torrent = null } function isOriginAllowed (req) {