Skip to content

Commit

Permalink
fix: catch pipe errors (#678)
Browse files Browse the repository at this point in the history
* fix: catch pipe errors

There were some pipe errors not being caught. This can result in unhandled exceptions being thrown

* fix: catch pipe errors in identify push handler
  • Loading branch information
jacobheun authored Jun 18, 2020
1 parent a1590ac commit a8219e6
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 20 deletions.
35 changes: 19 additions & 16 deletions src/identify/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ class IdentifyService {
* @param {*} options.stream
* @param {Connection} options.connection
*/
_handleIdentify ({ connection, stream }) {
async _handleIdentify ({ connection, stream }) {
let publicKey = Buffer.alloc(0)
if (this.peerId.pubKey) {
publicKey = this.peerId.pubKey.bytes
Expand All @@ -223,12 +223,16 @@ class IdentifyService {
protocols: Array.from(this._protocols.keys())
})

pipe(
[message],
lp.encode(),
stream,
consume
)
try {
await pipe(
[message],
lp.encode(),
stream,
consume
)
} catch (err) {
log.error('could not respond to identify request', err)
}
}

/**
Expand All @@ -239,17 +243,16 @@ class IdentifyService {
* @param {Connection} options.connection
*/
async _handlePush ({ connection, stream }) {
const [data] = await pipe(
[],
stream,
lp.decode(),
take(1),
toBuffer,
collect
)

let message
try {
const [data] = await pipe(
[],
stream,
lp.decode(),
take(1),
toBuffer,
collect
)
message = Message.decode(data)
} catch (err) {
return log.error('received invalid message', err)
Expand Down
2 changes: 1 addition & 1 deletion src/metrics/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ class Metrics {

const _sink = stream.sink
stream.sink = source => {
pipe(
return pipe(
source,
tap(chunk => metrics._onMessage({
remotePeer,
Expand Down
4 changes: 2 additions & 2 deletions src/pnet/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const handshake = require('it-handshake')
const { NONCE_LENGTH } = require('./key-generator')
const debug = require('debug')
const log = debug('libp2p:pnet')
log.err = debug('libp2p:pnet:err')
log.error = debug('libp2p:pnet:err')

/**
* Takes a Private Shared Key (psk) and provides a `protect` method
Expand Down Expand Up @@ -69,7 +69,7 @@ class Protector {
// Decrypt all inbound traffic
createUnboxStream(remoteNonce, this.psk),
external
)
).catch(log.error)

return internal
}
Expand Down
2 changes: 1 addition & 1 deletion src/upgrader.js
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ class Upgrader {
}

// Pipe all data through the muxer
pipe(upgradedConn, muxer, upgradedConn)
pipe(upgradedConn, muxer, upgradedConn).catch(log.error)
}

const _timeline = maConn.timeline
Expand Down

0 comments on commit a8219e6

Please sign in to comment.