fixed Uncaught Error exception bug (node: every stream gets the socket error propagated)

This commit is contained in:
David Dias 2015-07-09 23:45:58 -07:00
parent 44de105428
commit a80a5fc32b
2 changed files with 16 additions and 14 deletions

View File

@ -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) {

View File

@ -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) {