From cd8935441c4935acc39d09ba68983ac2f0c03d37 Mon Sep 17 00:00:00 2001 From: Friedel Ziegelmayer Date: Sun, 8 May 2016 22:58:38 +0200 Subject: [PATCH] fix: improve close handling --- package.json | 5 +++-- src/index.js | 13 +++++-------- test/node.js | 16 ++++------------ 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 53a15bf..8cf9152 100644 --- a/package.json +++ b/package.json @@ -34,11 +34,12 @@ "dependencies": { "mafmt": "^1.0.1", "multiaddr": "^1.1.1", + "run-parallel": "^1.1.6", "simple-websocket": "github:diasdavid/simple-websocket#ec31437" }, "devDependencies": { "chai": "^3.5.0", - "aegir": "^2.0.0", + "aegir": "^3.0.1", "gulp": "^3.9.1", "interface-connection": "0.0.3", "interface-transport": "^0.1.1", @@ -49,4 +50,4 @@ "Francisco Baio Dias ", "dignifiedquire " ] -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js index 8b11ad8..228f138 100644 --- a/src/index.js +++ b/src/index.js @@ -4,6 +4,7 @@ const debug = require('debug') const log = debug('libp2p:websockets') const SWS = require('simple-websocket') const mafmt = require('mafmt') +const parallel = require('run-parallel') exports = module.exports = WebSockets @@ -64,14 +65,10 @@ function WebSockets () { log('Called close with no active listeners') return callback() } - var count = 0 - listeners.forEach((listener) => { - listener.close(() => { - if (++count === listeners.length) { - callback() - } - }) - }) + + parallel(listeners.map((listener) => { + return (cb) => listener.close(cb) + }), callback) } this.filter = (multiaddrs) => { diff --git a/test/node.js b/test/node.js index e026350..cf2cccb 100644 --- a/test/node.js +++ b/test/node.js @@ -20,9 +20,7 @@ describe('libp2p-websockets', function () { ws.createListener(mh, (socket) => { expect(socket).to.exist socket.end() - ws.close(() => { - done() - }) + ws.close(done) }, () => { const conn = ws.dial(mh) conn.end() @@ -45,9 +43,7 @@ describe('libp2p-websockets', function () { expect(socket).to.exist socket.end() expect(socket.getObservedAddrs()).to.deep.equal([]) - ws.close(() => { - done() - }) + ws.close(done) }, () => { const conn = ws.dial(mh) conn.end() @@ -76,9 +72,7 @@ describe('libp2p-websockets', function () { conn.on('data', (data) => { expect(data.toString()).to.equal(message) conn.end() - ws.close(() => { - done() - }) + ws.close(done) }) }) }) @@ -99,9 +93,7 @@ describe('libp2p-websockets', function () { conn.on('data', (data) => { expect(data.toString()).to.equal(message) conn.end() - ws.close(() => { - done() - }) + ws.close(done) }) }) })