From ccc7879422a89297763548ebd3452978722056ce Mon Sep 17 00:00:00 2001 From: NIC619 Date: Sat, 16 Nov 2019 16:24:48 +0800 Subject: [PATCH] Add stream.write error handling in gossipsub --- libp2p/pubsub/gossipsub.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libp2p/pubsub/gossipsub.py b/libp2p/pubsub/gossipsub.py index 564cf44c..839d3f7d 100644 --- a/libp2p/pubsub/gossipsub.py +++ b/libp2p/pubsub/gossipsub.py @@ -518,7 +518,10 @@ class GossipSub(IPubsubRouter): peer_stream = self.pubsub.peers[sender_peer_id] # 4) And write the packet to the stream - await peer_stream.write(encode_varint_prefixed(rpc_msg)) + try: + await peer_stream.write(encode_varint_prefixed(rpc_msg)) + except StreamClosed: + logger.debug("Fail to responed to iwant request from %s: stream closed", sender_peer_id) async def handle_graft( self, graft_msg: rpc_pb2.ControlGraft, sender_peer_id: ID @@ -602,4 +605,7 @@ class GossipSub(IPubsubRouter): peer_stream = self.pubsub.peers[to_peer] # Write rpc to stream - await peer_stream.write(encode_varint_prefixed(rpc_msg)) + try: + await peer_stream.write(encode_varint_prefixed(rpc_msg)) + except StreamClosed: + logger.debug("Fail to emit control message to %s: stream closed", to_peer)