From 9b74d7912e5ee3191ca6f86f4f8a3c195d9d8a8d Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 2 Apr 2025 12:08:09 +0200 Subject: [PATCH] p2p/discover/v5wire: use Encoded field of Whoareyou --- p2p/discover/v5wire/encoding.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/p2p/discover/v5wire/encoding.go b/p2p/discover/v5wire/encoding.go index 15b35a1e31..cffed91f19 100644 --- a/p2p/discover/v5wire/encoding.go +++ b/p2p/discover/v5wire/encoding.go @@ -190,8 +190,9 @@ func (c *Codec) Encode(id enode.ID, addr string, packet Packet, challenge *Whoar switch { case packet.Kind() == WhoareyouPacket: // just send the WHOAREYOU packet raw again, rather than the re-encoded challenge data - if sentWhoareyou := c.sc.getHandshake(id, addr); sentWhoareyou != nil { - return sentWhoareyou.Encoded, sentWhoareyou.Nonce, nil + w := packet.(*Whoareyou) + if len(w.Encoded) > 0 { + return w.Encoded, w.Nonce, nil } head, err = c.encodeWhoareyou(id, packet.(*Whoareyou)) case challenge != nil: @@ -227,7 +228,7 @@ func (c *Codec) Encode(id enode.ID, addr string, packet Packet, challenge *Whoar if err != nil { return nil, Nonce{}, err } - challenge.Encoded = enc + challenge.Encoded = bytes.Clone(enc) c.sc.storeSentHandshake(id, addr, challenge) return enc, head.Nonce, err }