diff --git a/dht.go b/dht.go index 1c5beed..6486ce4 100644 --- a/dht.go +++ b/dht.go @@ -472,7 +472,7 @@ func (dht *IpfsDHT) peerFromInfo(pbp *Message_Peer) (*peer.Peer, error) { } if p == nil { - maddr, err := ma.NewMultiaddr(pbp.GetAddr()) + maddr, err := pbp.Address() if err != nil { return nil, err } @@ -481,6 +481,7 @@ func (dht *IpfsDHT) peerFromInfo(pbp *Message_Peer) (*peer.Peer, error) { p = &peer.Peer{ID: id} p.AddAddress(maddr) dht.peerstore.Put(p) + log.Info("dht found new peer: %s %s", p, maddr) } return p, nil } diff --git a/handlers.go b/handlers.go index 0c739ab..0fcbb2b 100644 --- a/handlers.go +++ b/handlers.go @@ -176,19 +176,25 @@ func (dht *IpfsDHT) handleAddProvider(p *peer.Peer, pmes *Message) (*Message, er log.Debug("%s adding %s as a provider for '%s'\n", dht.self, p, peer.ID(key)) // add provider should use the address given in the message - for _, pb := range pmes.GetCloserPeers() { - if peer.ID(pb.GetId()).Equal(p.ID) { + for _, pb := range pmes.GetProviderPeers() { + pid := peer.ID(pb.GetId()) + if pid.Equal(p.ID) { addr, err := pb.Address() if err != nil { log.Error("provider %s error with address %s", p, *pb.Addr) continue } + + log.Info("received provider %s %s for %s", p, addr, key) p.AddAddress(addr) + dht.providers.AddProvider(key, p) + + } else { + log.Error("handleAddProvider received provider %s from %s", pid, p) } } - dht.providers.AddProvider(key, p) return pmes, nil // send back same msg as confirmation. }