diff --git a/quicp2p.nim b/quicp2p.nim index b50c53f..66afef5 100644 --- a/quicp2p.nim +++ b/quicp2p.nim @@ -310,18 +310,20 @@ proc handleMsg(ctx: QuicP2PContext, msg: string, peerId: string, conn = c.conn break if conn != nil: - discard quicly_receive(conn, nil, peerAddr, addr decoded) + let receiveResult = quicly_receive(conn, nil, peerAddr, addr decoded) + if receiveResult != 0: + ctx.puncher.handleMsg(msg, peerAddr[], peerSockLen) elif peerId.len == 0: let acceptResult = quicly_accept(addr conn, addr ctx.quiclyCtx, nil, peerAddr, addr decoded, nil, addr ctx.nextCid, nil) echo "acceptResult: ", acceptResult - if acceptResult == 0: - ctx.addConnection(conn, peerId) - else: + if acceptResult != 0: # The puncher needs to be informed about this message because it may # be the peer's response to our respond call. ctx.puncher.handleMsg(msg, peerAddr[], peerSockLen) + else: + ctx.addConnection(conn, peerId) proc receive(ctx: QuicP2PContext, peerId: string) {.async.} = while true: