p2p/discover: reject older records in requestENR

This commit is contained in:
Felix Lange 2019-05-14 12:16:19 -04:00
parent 4bdf1a4b99
commit 03c58fc08a

View file

@ -551,6 +551,9 @@ func (t *UDPv4) requestENR(n *enode.Node) (*enode.Node, error) {
if respN.ID() != n.ID() { if respN.ID() != n.ID() {
return nil, fmt.Errorf("invalid ID in response record") return nil, fmt.Errorf("invalid ID in response record")
} }
if respN.Seq() < n.Seq() {
return n, nil // response record is older
}
if err := netutil.CheckRelayIP(addr.IP, respN.IP()); err != nil { if err := netutil.CheckRelayIP(addr.IP, respN.IP()); err != nil {
return nil, fmt.Errorf("invalid IP in response record: %v", err) return nil, fmt.Errorf("invalid IP in response record: %v", err)
} }