go-ethereum/p2p
lightclient cc22e0cdf0
p2p/discover: fix update logic in handleAddNode (#29836)
It seems the semantic differences between addFoundNode and addInboundNode were lost in
#29572. My understanding is addFoundNode is for a node you have not contacted directly
(and are unsure if is available) whereas addInboundNode is for adding nodes that have
contacted the local node and we can verify they are active.

handleAddNode seems to be the consolidation of those two methods, yet it bumps the node in
the bucket (updating it's IP addr) even if the node was not an inbound. This PR fixes
this. It wasn't originally caught in tests like TestTable_addSeenNode because the
manipulation of the node object actually modified the node value used by the test.

New logic is added to reject non-inbound updates unless the sequence number of the
(signed) ENR increases. Inbound updates, which are published by the updated node itself,
are always accepted. If an inbound update changes the endpoint, the node will be
revalidated on an expedited schedule.

Co-authored-by: Felix Lange <fjl@twurst.com>
2024-05-28 21:30:17 +02:00
..
discover p2p/discover: fix update logic in handleAddNode (#29836) 2024-05-28 21:30:17 +02:00
dnsdisc p2p/dnsdisc: using clear builtin func (#29418) 2024-04-04 12:19:48 +02:00
enode p2p/enode: fix TCPEndpoint (#29827) 2024-05-23 23:17:51 +02:00
enr p2p/enode: fix endpoint determination for IPv6 (#29801) 2024-05-23 14:27:03 +02:00
msgrate log: remove lazy, remove unused interfaces, unexport methods (#28622) 2023-12-05 11:54:44 +01:00
nat p2p/nat: fix typos in comments (#29536) 2024-04-15 14:58:17 +02:00
netutil p2p: initialize maps with known size (#27229) 2023-05-10 10:52:26 +02:00
nodestate all: fix mismatched names in comments (#29348) 2024-03-26 21:01:28 +01:00
rlpx all: update to go version 1.22.1 (#28946) 2024-03-18 17:36:50 +01:00
simulations p2p/simulations/adapters: use maps.Clone (#29626) 2024-04-29 19:44:41 +02:00
tracker all: fix some typos (#25551) 2022-08-19 09:00:21 +03:00
dial.go p2p: fix race in dialScheduler (#29235) 2024-03-12 19:23:24 +01:00
dial_test.go p2p: initialize maps with known size (#27229) 2023-05-10 10:52:26 +02:00
message.go p2p: use atomic types (#27764) 2023-08-01 23:20:52 +02:00
message_test.go p2p: move rlpx into separate package (#21464) 2020-09-22 10:17:39 +02:00
metrics.go p2p: add inbound and outbound peers metric (#29424) 2024-04-02 21:18:28 +02:00
peer.go all: remove dependency on golang.org/exp (#29314) 2024-03-25 07:50:18 +01:00
peer_error.go p2p: use errors.Is for error comparison (#24882) 2022-06-07 17:27:21 +02:00
peer_test.go p2p: move rlpx into separate package (#21464) 2020-09-22 10:17:39 +02:00
protocol.go all: update golang/x/ext and fix slice sorting fallout (#27909) 2023-08-12 00:04:12 +02:00
server.go p2p: fix typos (#29828) 2024-05-24 11:33:19 +02:00
server_nat.go p2p: fix accidental termination of portMappingLoop (#28911) 2024-02-05 22:00:46 +01:00
server_nat_test.go cmd/bootnode, p2p: support for alternate mapped ports (#26359) 2023-07-14 14:58:27 +02:00
server_test.go cmd/bootnode, p2p: support for alternate mapped ports (#26359) 2023-07-14 14:58:27 +02:00
transport.go p2p, log, rpc: use errors.New to replace fmt.Errorf with no parameters (#29074) 2024-02-26 11:25:35 +02:00
transport_test.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
util.go all: assign zero after resize in implementations of heap.Interface (#26296) 2022-12-05 13:49:54 +01:00
util_test.go p2p: new dial scheduler (#20592) 2020-02-13 11:10:03 +01:00