fix: improve close handling

This commit is contained in:
Friedel Ziegelmayer 2016-05-08 22:58:38 +02:00
parent 57c731889c
commit cd8935441c
3 changed files with 12 additions and 22 deletions

View File

@ -34,11 +34,12 @@
"dependencies": { "dependencies": {
"mafmt": "^1.0.1", "mafmt": "^1.0.1",
"multiaddr": "^1.1.1", "multiaddr": "^1.1.1",
"run-parallel": "^1.1.6",
"simple-websocket": "github:diasdavid/simple-websocket#ec31437" "simple-websocket": "github:diasdavid/simple-websocket#ec31437"
}, },
"devDependencies": { "devDependencies": {
"chai": "^3.5.0", "chai": "^3.5.0",
"aegir": "^2.0.0", "aegir": "^3.0.1",
"gulp": "^3.9.1", "gulp": "^3.9.1",
"interface-connection": "0.0.3", "interface-connection": "0.0.3",
"interface-transport": "^0.1.1", "interface-transport": "^0.1.1",

View File

@ -4,6 +4,7 @@ const debug = require('debug')
const log = debug('libp2p:websockets') const log = debug('libp2p:websockets')
const SWS = require('simple-websocket') const SWS = require('simple-websocket')
const mafmt = require('mafmt') const mafmt = require('mafmt')
const parallel = require('run-parallel')
exports = module.exports = WebSockets exports = module.exports = WebSockets
@ -64,14 +65,10 @@ function WebSockets () {
log('Called close with no active listeners') log('Called close with no active listeners')
return callback() return callback()
} }
var count = 0
listeners.forEach((listener) => { parallel(listeners.map((listener) => {
listener.close(() => { return (cb) => listener.close(cb)
if (++count === listeners.length) { }), callback)
callback()
}
})
})
} }
this.filter = (multiaddrs) => { this.filter = (multiaddrs) => {

View File

@ -20,9 +20,7 @@ describe('libp2p-websockets', function () {
ws.createListener(mh, (socket) => { ws.createListener(mh, (socket) => {
expect(socket).to.exist expect(socket).to.exist
socket.end() socket.end()
ws.close(() => { ws.close(done)
done()
})
}, () => { }, () => {
const conn = ws.dial(mh) const conn = ws.dial(mh)
conn.end() conn.end()
@ -45,9 +43,7 @@ describe('libp2p-websockets', function () {
expect(socket).to.exist expect(socket).to.exist
socket.end() socket.end()
expect(socket.getObservedAddrs()).to.deep.equal([]) expect(socket.getObservedAddrs()).to.deep.equal([])
ws.close(() => { ws.close(done)
done()
})
}, () => { }, () => {
const conn = ws.dial(mh) const conn = ws.dial(mh)
conn.end() conn.end()
@ -76,9 +72,7 @@ describe('libp2p-websockets', function () {
conn.on('data', (data) => { conn.on('data', (data) => {
expect(data.toString()).to.equal(message) expect(data.toString()).to.equal(message)
conn.end() conn.end()
ws.close(() => { ws.close(done)
done()
})
}) })
}) })
}) })
@ -99,9 +93,7 @@ describe('libp2p-websockets', function () {
conn.on('data', (data) => { conn.on('data', (data) => {
expect(data.toString()).to.equal(message) expect(data.toString()).to.equal(message)
conn.end() conn.end()
ws.close(() => { ws.close(done)
done()
})
}) })
}) })
}) })