Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions pkg/p2p/libp2p/internal/reacher/reacher.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@ func (r *reacher) tryAcquirePeer() (*peer, time.Duration) {

// Connected adds a new peer to the queue for testing reachability.
func (r *reacher) Connected(overlay swarm.Address, addr ma.Multiaddr) {
if addr == nil {
return
}

r.mu.Lock()
defer r.mu.Unlock()

Expand Down
19 changes: 5 additions & 14 deletions pkg/p2p/libp2p/libp2p.go
Original file line number Diff line number Diff line change
Expand Up @@ -789,7 +789,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
return
}

s.notifyReacherConnected(overlay, peerID)
s.notifyReacherConnected(overlay, peerMultiaddrs)

peerUserAgent := appendSpace(s.peerUserAgent(s.ctx, peerID))
s.networkStatus.Store(int32(p2p.NetworkStatusAvailable))
Expand All @@ -798,23 +798,14 @@ func (s *Service) handleIncoming(stream network.Stream) {
s.logger.Debug("stream handler: successfully connected to peer (inbound)", "address", i.BzzAddress.Overlay, "light", i.LightString(), "user_agent", peerUserAgent)
}

func (s *Service) notifyReacherConnected(overlay swarm.Address, peerID libp2ppeer.ID) {
func (s *Service) notifyReacherConnected(overlay swarm.Address, underlay []ma.Multiaddr) {
if s.reacher == nil {
return
}

peerAddrs := s.host.Peerstore().Addrs(peerID)
bestAddr := bzz.SelectBestAdvertisedAddress(peerAddrs, nil)
bestAddr := bzz.SelectBestAdvertisedAddress(underlay, nil)

s.logger.Debug("selected reacher address", "peer_id", peerID, "selected_addr", bestAddr.String(), "advertised_count", len(peerAddrs))

underlay, err := buildFullMA(bestAddr, peerID)
if err != nil {
s.logger.Error(err, "stream handler: unable to build complete peer multiaddr", "peer", overlay, "multiaddr", bestAddr, "peer_id", peerID)
_ = s.Disconnect(overlay, "unable to build complete peer multiaddr")
return
}
s.reacher.Connected(overlay, underlay)
s.reacher.Connected(overlay, bestAddr)
}

func (s *Service) SetPickyNotifier(n p2p.PickyNotifier) {
Expand Down Expand Up @@ -1156,7 +1147,7 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b

s.metrics.CreatedConnectionCount.Inc()

s.notifyReacherConnected(overlay, peerID)
s.notifyReacherConnected(overlay, peerMultiaddrs)

peerUA := appendSpace(s.peerUserAgent(ctx, peerID))
loggerV1.Debug("successfully connected to peer (outbound)", "addresses", i.BzzAddress.ShortString(), "light", i.LightString(), "user_agent", peerUA)
Expand Down
Loading