From 18e00a741b7925ed1495f7ff493d5106d0d04801 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 4 Mar 2024 00:24:18 +0100 Subject: [PATCH] avoid `KeyError` in edge case of yamux handler (#1044) --- libp2p/muxers/yamux/yamux.nim | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libp2p/muxers/yamux/yamux.nim b/libp2p/muxers/yamux/yamux.nim index de0574af7..2a3e1f03e 100644 --- a/libp2p/muxers/yamux/yamux.nim +++ b/libp2p/muxers/yamux/yamux.nim @@ -528,7 +528,12 @@ method handle*(m: Yamux) {.async.} = await m.connection.readExactly(addr buffer[0], int(header.length)) continue - let channel = m.channels[header.streamId] + let channel = + try: + m.channels[header.streamId] + except KeyError: + raise newException(YamuxError, + "Stream was cleaned up before handling data: " & $header.streamId) if header.msgType == WindowUpdate: channel.sendWindow += int(header.length)