@@ -3,6 +3,7 @@ package main
33import (
44 "context"
55 "errors"
6+ "fmt"
67 "reflect"
78 "sync"
89 "time"
@@ -377,35 +378,38 @@ func (d libp2pRouter) FindPeers(ctx context.Context, pid peer.ID, limit int) (it
377378func (d libp2pRouter ) GetClosestPeers (ctx context.Context , key cid.Cid ) (iter.ResultIter [* types.PeerRecord ], error ) {
378379 // Per the spec, if the peer ID is empty, we should use self.
379380 if key == cid .Undef {
380- key = peer . ToCid ( d . host . ID () )
381+ return nil , errors . New ( "GetClosestPeers: key is undefined" )
381382 }
382383
383384 keyStr := string (key .Hash ())
384385 var peers []peer.ID
385386 var err error
386387
387- switch v := d .routing .(type ) {
388+ switch dhtClient := d .routing .(type ) {
388389 case * dual.DHT :
389- // Only use WAN DHT for public HTTP Routing API.
390+ // Only use WAN DHT for public HTTP Routing API (same as Kubo)
390391 // LAN DHT contains private network peers that should not be exposed publicly.
391- peers , err = v .WAN .GetClosestPeers (ctx , keyStr )
392+ if dhtClient .WAN == nil {
393+ return nil , fmt .Errorf ("GetClosestPeers not supported: WAN DHT is not available" )
394+ }
395+ peers , err = dhtClient .WAN .GetClosestPeers (ctx , keyStr )
392396 if err != nil {
393397 return nil , err
394398 }
395399 case * fullrt.FullRT :
396- peers , err = v .GetClosestPeers (ctx , keyStr )
400+ peers , err = dhtClient .GetClosestPeers (ctx , keyStr )
397401 if err != nil {
398402 return nil , err
399403 }
400404 case * dht.IpfsDHT :
401- peers , err = v .GetClosestPeers (ctx , keyStr )
405+ peers , err = dhtClient .GetClosestPeers (ctx , keyStr )
402406 if err != nil {
403407 return nil , err
404408 }
405409 case * bundledDHT :
406410 // bundledDHT uses either fullRT (when ready) or standard DHT
407411 // We need to call GetClosestPeers on the active DHT
408- activeDHT := v .getDHT ()
412+ activeDHT := dhtClient .getDHT ()
409413 switch dht := activeDHT .(type ) {
410414 case * fullrt.FullRT :
411415 peers , err = dht .GetClosestPeers (ctx , keyStr )
0 commit comments