fix: catch errors during identify (#1138)

Sometimes identify can be started while we are shutting down (for
example) - we should just log these errors.
This commit is contained in:
Alex Potsides
2022-01-21 08:26:21 +00:00
committed by GitHub
parent a4bba35948
commit 12f1bb0aee

View File

@ -267,25 +267,25 @@ class IdentifyService {
* @returns {Promise<void>}
*/
async _handleIdentify ({ connection, stream }) {
let publicKey = new Uint8Array(0)
if (this.peerId.pubKey) {
publicKey = this.peerId.pubKey.bytes
}
const signedPeerRecord = await this.peerStore.addressBook.getRawEnvelope(this.peerId)
const protocols = await this.peerStore.protoBook.get(this.peerId)
const message = Message.Identify.encode({
protocolVersion: this._host.protocolVersion,
agentVersion: this._host.agentVersion,
publicKey,
listenAddrs: this._libp2p.multiaddrs.map((ma) => ma.bytes),
signedPeerRecord,
observedAddr: connection.remoteAddr.bytes,
protocols
}).finish()
try {
let publicKey = new Uint8Array(0)
if (this.peerId.pubKey) {
publicKey = this.peerId.pubKey.bytes
}
const signedPeerRecord = await this.peerStore.addressBook.getRawEnvelope(this.peerId)
const protocols = await this.peerStore.protoBook.get(this.peerId)
const message = Message.Identify.encode({
protocolVersion: this._host.protocolVersion,
agentVersion: this._host.agentVersion,
publicKey,
listenAddrs: this._libp2p.multiaddrs.map((ma) => ma.bytes),
signedPeerRecord,
observedAddr: connection.remoteAddr.bytes,
protocols
}).finish()
await pipe(
[message],
lp.encode(),
@ -343,7 +343,11 @@ class IdentifyService {
}
// Update the protocols
await this.peerStore.protoBook.set(id, message.protocols)
try {
await this.peerStore.protoBook.set(id, message.protocols)
} catch (/** @type {any} */ err) {
log.error('received invalid protocols', err)
}
}
/**