fix:fix not send challenge more than once

Signed-off-by: Chen Kai <281165273grape@gmail.com>
This commit is contained in:
Chen Kai 2024-10-10 09:51:11 +08:00
parent a2be28094b
commit 28d395dccc

View file

@ -116,6 +116,7 @@ var (
errInvalidNonceSig = errors.New("invalid ID nonce signature") errInvalidNonceSig = errors.New("invalid ID nonce signature")
errMessageTooShort = errors.New("message contains no data") errMessageTooShort = errors.New("message contains no data")
errMessageDecrypt = errors.New("cannot decrypt message") errMessageDecrypt = errors.New("cannot decrypt message")
errChallengeAlreadySent = errors.New("challenge already sent to this node")
) )
// Public errors. // Public errors.
@ -219,7 +220,7 @@ func (c *Codec) Encode(id enode.ID, addr string, packet Packet, challenge *Whoar
if challenge, ok := packet.(*Whoareyou); ok { if challenge, ok := packet.(*Whoareyou); ok {
// check if we already sent a challenge to this node // check if we already sent a challenge to this node
if c.sc.getHandshake(id, addr) != nil { if c.sc.getHandshake(id, addr) != nil {
return nil, Nonce{}, nil return nil, Nonce{}, errChallengeAlreadySent
} }
challenge.ChallengeData = bytesCopy(&c.buf) challenge.ChallengeData = bytesCopy(&c.buf)
c.sc.storeSentHandshake(id, addr, challenge) c.sc.storeSentHandshake(id, addr, challenge)