Skip to content

Commit 42bd221

Browse files
committed
GetClosestPeers: align router's implementation with Kubo. Review Feedback.
1 parent 96ded44 commit 42bd221

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

server_routers.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
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
377378
func (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

Comments
 (0)