diff options
author | Feross Aboukhadijeh <feross@feross.org> | 2015-07-28 08:29:33 +0300 |
---|---|---|
committer | Feross Aboukhadijeh <feross@feross.org> | 2015-07-28 08:29:33 +0300 |
commit | 4b48bad8766a5215c68451f70250a7f6f7262303 (patch) | |
tree | a0aba47a714fe64a8fcb6eddd7960713ca1a4bbb /lib | |
parent | d721cb80b472c4faf3691fc81d55d968981d3fef (diff) |
cmd: --vlc keeps the event loop alive during "graceful exit" stage (fix #388)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/server.js | 18 | ||||
-rw-r--r-- | lib/torrent.js | 2 |
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/server.js b/lib/server.js index a9c2542..540794e 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1,3 +1,5 @@ +module.exports = Server + var debug = require('debug')('webtorrent:server') var http = require('http') var mime = require('mime') @@ -5,13 +7,27 @@ var pump = require('pump') var rangeParser = require('range-parser') var url = require('url') -module.exports = function Server (torrent, opts) { +function Server (torrent, opts) { var server = http.createServer(opts) + var sockets = [] + server.on('connection', function (socket) { socket.setTimeout(36000000) + sockets.push(socket) + socket.on('close', function () { + var index = sockets.indexOf(socket) + if (index >= 0) sockets.splice(index, 1) + }) }) + server.destroy = function (cb) { + sockets.forEach(function (socket) { + socket.destroy() + }) + server.close(cb) + } + server.on('request', function (req, res) { debug('onRequest') diff --git a/lib/torrent.js b/lib/torrent.js index 214b49a..40f7d4a 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -376,7 +376,7 @@ Torrent.prototype.destroy = function (cb) { var tasks = [] self._servers.forEach(function (server) { - tasks.push(function (cb) { server.close(cb) }) + tasks.push(function (cb) { server.destroy(cb) }) }) if (self.swarm) tasks.push(function (cb) { self.swarm.destroy(cb) }) |