From fc36de21c1ceb2a5b0c36c4a83c9e13b938e9169 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Mon, 9 Sep 2019 17:08:30 -0600 Subject: [PATCH] handle exceptions correctly --- libp2p/connection.nim | 11 +++++++---- libp2p/stream/chronosstream.nim | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/libp2p/connection.nim b/libp2p/connection.nim index 36c1517..c668742 100644 --- a/libp2p/connection.nim +++ b/libp2p/connection.nim @@ -7,7 +7,7 @@ ## This file may not be copied, modified, or distributed except according to ## those terms. -import chronos, options +import chronos, options, chronicles import peerinfo, multiaddress, stream/lpstream, @@ -101,9 +101,8 @@ proc readLp*(s: Connection): Future[seq[byte]] {.async, gcsafe.} = buffer.setLen(size) if size > 0.uint: await s.readExactly(addr buffer[0], int(size)) - except TransportIncompleteError: - buffer.setLen(0) - except AsyncStreamIncompleteError: + except LPStreamIncompleteError, LPStreamReadError: + debug "readLp: could not read from remote", exception = getCurrentExceptionMsg() buffer.setLen(0) result = buffer @@ -118,3 +117,7 @@ proc writeLp*(s: Connection, msg: string | seq[byte]): Future[void] {.gcsafe.} = method getObservedAddrs*(c: Connection): Future[MultiAddress] {.base, async, gcsafe.} = ## get resolved multiaddresses for the connection discard + +proc `$`*(conn: Connection): string = + if conn.peerInfo.isSome: + result = $(conn.peerInfo.get().peerId) diff --git a/libp2p/stream/chronosstream.nim b/libp2p/stream/chronosstream.nim index 72f0549..0243235 100644 --- a/libp2p/stream/chronosstream.nim +++ b/libp2p/stream/chronosstream.nim @@ -36,7 +36,7 @@ method readExactly*(s: ChronosStream, nbytes: int): Future[void] {.async, gcsafe.} = try: await s.reader.readExactly(pbytes, nbytes) - except TransportIncompleteError, AsyncStreamIncompleteError: + except AsyncStreamIncompleteError: raise newLPStreamIncompleteError() except AsyncStreamReadError as exc: raise newLPStreamReadError(exc.par)