@@ -204,12 +204,6 @@ func (t *UDPv5) Close() {
204204 })
205205}
206206
207- // PingWithoutResp sends a ping message to the given node.
208- func (t * UDPv5 ) PingWithoutResp (n * enode.Node ) error {
209- _ , err := t .ping (n )
210- return err
211- }
212-
213207// Resolve searches for a specific node with the given ID and tries to get the most recent
214208// version of the node record for it. It returns n if the node could not be resolved.
215209func (t * UDPv5 ) Resolve (n * enode.Node ) * enode.Node {
@@ -246,7 +240,7 @@ func (t *UDPv5) ResolveNodeId(id enode.ID) *enode.Node {
246240 }
247241
248242 // Otherwise do a network lookup.
249- result := t .Lookup (n . ID () )
243+ result := t .Lookup (id )
250244 for _ , rn := range result {
251245 if rn .ID () == id {
252246 if n != nil && rn .Seq () <= n .Seq () {
@@ -262,15 +256,20 @@ func (t *UDPv5) ResolveNodeId(id enode.ID) *enode.Node {
262256
263257// AllNodes returns all the nodes stored in the local table.
264258func (t * UDPv5 ) AllNodes () []* enode.Node {
265- return t .tab .nodeList ()
266- }
259+ t .tab .mutex .Lock ()
260+ defer t .tab .mutex .Unlock ()
261+ nodes := make ([]* enode.Node , 0 )
267262
268- // RoutingTableInfo returns the routing table information. Used for Portal discv5 RoutingTableInfo API.
269- func (t * UDPv5 ) RoutingTableInfo () [][]string {
270- return t .tab .nodeIds ()
263+ for _ , b := range & t .tab .buckets {
264+ for _ , n := range b .entries {
265+ nodes = append (nodes , n .Node )
266+ }
267+ }
268+ return nodes
271269}
272270
273- // AddKnownNode adds a node to the routing table. Used for Portal discv5 AddEnr API.
271+ // AddKnownNode adds a node to the routing table.
272+ // The function should be used for testing only.
274273func (t * UDPv5 ) AddKnownNode (n * enode.Node ) bool {
275274 return t .tab .addFoundNode (n , true )
276275}
@@ -280,11 +279,6 @@ func (t *UDPv5) DeleteNode(n *enode.Node) {
280279 t .tab .deleteNode (n )
281280}
282281
283- // WaitInit waits for the routing table to be initialized.
284- func (t * UDPv5 ) WaitInit () {
285- t .tab .waitInit ()
286- }
287-
288282// LocalNode returns the current local Node running the
289283// protocol.
290284func (t * UDPv5 ) LocalNode () * enode.LocalNode {
@@ -404,16 +398,16 @@ func lookupDistances(target, dest enode.ID) (dists []uint) {
404398
405399// ping calls PING on a node and waits for a PONG response.
406400func (t * UDPv5 ) ping (n * enode.Node ) (uint64 , error ) {
407- pong , err := t .PingWithResp (n )
401+ pong , err := t .Ping (n )
408402 if err != nil {
409403 return 0 , err
410404 }
411405
412406 return pong .ENRSeq , nil
413407}
414408
415- // PingWithResp calls PING on a node and waits for a PONG response.
416- func (t * UDPv5 ) PingWithResp (n * enode.Node ) (* v5wire.Pong , error ) {
409+ // Ping calls PING on a node and waits for a PONG response.
410+ func (t * UDPv5 ) Ping (n * enode.Node ) (* v5wire.Pong , error ) {
417411 req := & v5wire.Ping {ENRSeq : t .localNode .Node ().Seq ()}
418412 resp := t .callToNode (n , v5wire .PongMsg , req )
419413 defer t .callDone (resp )
@@ -837,6 +831,11 @@ func (t *UDPv5) GetNode(id enode.ID) *enode.Node {
837831 return nil
838832}
839833
834+ // Nodes returns the nodes in the routing table.
835+ func (t * UDPv5 ) Nodes () [][]BucketNode {
836+ return t .tab .Nodes ()
837+ }
838+
840839// handle processes incoming packets according to their message type.
841840func (t * UDPv5 ) handle (p v5wire.Packet , fromID enode.ID , fromAddr netip.AddrPort ) {
842841 switch p := p .(type ) {
0 commit comments