let puncher handle message whenever a message is received for a non-existing connection

This commit is contained in:
Christian Ulrich 2020-11-17 23:58:38 +01:00
parent dc7c94ed0d
commit e20a4b223d
No known key found for this signature in database
GPG Key ID: 8241BE099775A097
2 changed files with 12 additions and 14 deletions

View File

@ -72,6 +72,7 @@ proc handleMsg*(puncher: Puncher, msg: string, peerIp: IpAddress,
## ``initiate`` and ``respond``. ## ``initiate`` and ``respond``.
if msg != "ACK": if msg != "ACK":
return return
echo &"handling ACK message from {peerIp}:{peerPort}"
let (_, myPort) = puncher.sock.getLocalAddr() let (_, myPort) = puncher.sock.getLocalAddr()
let query = Attempt(srcPort: myPort, dstIp: peerIp, dstPorts: @[peerPort]) let query = Attempt(srcPort: myPort, dstIp: peerIp, dstPorts: @[peerPort])
let i = puncher.attempts.find(query) let i = puncher.attempts.find(query)

View File

@ -310,19 +310,16 @@ proc handleMsg(ctx: QuicP2PContext, msg: string, peerId: string,
conn = c.conn conn = c.conn
break break
if conn != nil: if conn != nil:
let receiveResult = quicly_receive(conn, nil, peerAddr, addr decoded) discard quicly_receive(conn, nil, peerAddr, addr decoded)
if receiveResult != 0: else:
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:
# The puncher needs to be informed about this message because it may # The puncher needs to be informed about this message because it may
# be the peer's response to our respond call. # be the peer's response to our respond call.
ctx.puncher.handleMsg(msg, peerAddr[], peerSockLen) ctx.puncher.handleMsg(msg, peerAddr[], peerSockLen)
else: if peerId.len == 0:
let acceptResult = quicly_accept(addr conn, addr ctx.quiclyCtx, nil,
peerAddr, addr decoded, nil,
addr ctx.nextCid, nil)
if acceptResult == 0:
ctx.addConnection(conn, peerId) ctx.addConnection(conn, peerId)
proc receive(ctx: QuicP2PContext, peerId: string) {.async.} = proc receive(ctx: QuicP2PContext, peerId: string) {.async.} =