From 0b753e7cf28e46c083f7629a44f9c5f5e0323f1a Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 4 Mar 2024 00:05:59 +0100 Subject: [PATCH] don't forget closing the stream when final `{Fin}` fails in yamux (#1043) --- libp2p/muxers/yamux/yamux.nim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libp2p/muxers/yamux/yamux.nim b/libp2p/muxers/yamux/yamux.nim index fcca06e2b..92f1ade89 100644 --- a/libp2p/muxers/yamux/yamux.nim +++ b/libp2p/muxers/yamux/yamux.nim @@ -199,8 +199,9 @@ method closeImpl*(channel: YamuxChannel) {.async.} = channel.closedLocally = true channel.isEof = true - if channel.isReset == false and channel.sendQueue.len == 0: - await channel.conn.write(YamuxHeader.data(channel.id, 0, {Fin})) + if not channel.isReset and channel.sendQueue.len == 0: + try: await channel.conn.write(YamuxHeader.data(channel.id, 0, {Fin})) + except CancelledError, LPStreamError: discard await channel.actuallyClose() proc reset(channel: YamuxChannel, isLocal: bool = false) {.async.} =