mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-05-29 10:11:19 +00:00
fixed Uncaught Error exception bug (node: every stream gets the socket error propagated)
This commit is contained in:
parent
44de105428
commit
a80a5fc32b
@ -13,6 +13,10 @@ i.on('thenews', function (news) {
|
|||||||
console.log('such news')
|
console.log('such news')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
b.on('error', function (err) {
|
||||||
|
if (err) return
|
||||||
|
})
|
||||||
|
|
||||||
b.listen()
|
b.listen()
|
||||||
|
|
||||||
b.registerHandle('/ipfs/sparkles/1.2.3', function (stream) {
|
b.registerHandle('/ipfs/sparkles/1.2.3', function (stream) {
|
||||||
|
26
src/swarm.js
26
src/swarm.js
@ -36,10 +36,7 @@ function Swarm () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.listener = tcp.createServer(function (socket) {
|
self.listener = tcp.createServer(function (socket) {
|
||||||
socket.on('error', function (err) {
|
socket.on('error', errorEmit)
|
||||||
// self.emit('error', err)
|
|
||||||
})
|
|
||||||
socket.on('close', function () {})
|
|
||||||
var ms = new Select()
|
var ms = new Select()
|
||||||
ms.handle(socket)
|
ms.handle(socket)
|
||||||
ms.addHandler('/spdy/3.1.0', function (ds) {
|
ms.addHandler('/spdy/3.1.0', function (ds) {
|
||||||
@ -56,16 +53,13 @@ function Swarm () {
|
|||||||
|
|
||||||
// attach multistream handlers to incoming streams
|
// attach multistream handlers to incoming streams
|
||||||
conn.on('stream', registerHandles)
|
conn.on('stream', registerHandles)
|
||||||
conn.on('error', function (err) {
|
conn.on('error', errorEmit)
|
||||||
// self.emit('error', err)
|
|
||||||
})
|
|
||||||
conn.on('close', function () {})
|
|
||||||
|
|
||||||
// IDENTIFY DOES THAT FOR US
|
// IDENTIFY DOES THAT FOR US
|
||||||
// conn.on('close', function () { delete self.connections[conn.peerId] })
|
// conn.on('close', function () { delete self.connections[conn.peerId] })
|
||||||
})
|
})
|
||||||
}).listen(self.port, ready)
|
}).listen(self.port, ready)
|
||||||
self.listener.on('error', function (err) { self.emit('error', err) })
|
self.listener.on('error', errorEmit)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +76,7 @@ function Swarm () {
|
|||||||
|
|
||||||
var tmp = tcp.connect(multiaddr.toOptions(), function () {
|
var tmp = tcp.connect(multiaddr.toOptions(), function () {
|
||||||
socket = tmp
|
socket = tmp
|
||||||
socket.on('error', function (err) { self.emit('error', err) })
|
socket.on('error', errorEmit)
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -115,7 +109,7 @@ function Swarm () {
|
|||||||
self.connections[peer.id.toB58String()] = conn
|
self.connections[peer.id.toB58String()] = conn
|
||||||
|
|
||||||
conn.on('close', function () { delete self.connections[peer.id.toB58String()] })
|
conn.on('close', function () { delete self.connections[peer.id.toB58String()] })
|
||||||
conn.on('error', function (err) { self.emit('error', err) })
|
conn.on('error', errorEmit)
|
||||||
|
|
||||||
createStream(peer, protocol, cb)
|
createStream(peer, protocol, cb)
|
||||||
})
|
})
|
||||||
@ -127,6 +121,7 @@ function Swarm () {
|
|||||||
var conn = self.connections[peer.id.toB58String()]
|
var conn = self.connections[peer.id.toB58String()]
|
||||||
conn.request({path: '/', method: 'GET'}, function (err, stream) {
|
conn.request({path: '/', method: 'GET'}, function (err, stream) {
|
||||||
if (err) { return cb(err) }
|
if (err) { return cb(err) }
|
||||||
|
stream.on('error', errorEmit)
|
||||||
|
|
||||||
// negotiate desired protocol
|
// negotiate desired protocol
|
||||||
var msi = new Interactive()
|
var msi = new Interactive()
|
||||||
@ -164,15 +159,18 @@ function Swarm () {
|
|||||||
self.listener.close(cb)
|
self.listener.close(cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
function registerHandles (spdyStream) {
|
function registerHandles (stream) {
|
||||||
log.info('Preparing stream to handle the registered protocols')
|
log.info('Registering protocol handlers on new stream')
|
||||||
|
stream.on('error', errorEmit)
|
||||||
var msH = new Select()
|
var msH = new Select()
|
||||||
msH.handle(spdyStream)
|
msH.handle(stream)
|
||||||
self.handles.forEach(function (handle) {
|
self.handles.forEach(function (handle) {
|
||||||
msH.addHandler(handle.protocol, handle.func)
|
msH.addHandler(handle.protocol, handle.func)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function errorEmit (err) { self.emit('error', err) }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Counter (target, callback) {
|
function Counter (target, callback) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user