@@ -413,10 +413,7 @@ func (s *Service) handleIncoming(stream network.Stream) {
413413 peerID := stream .Conn ().RemotePeer ()
414414 handshakeStream := newStream (stream , s .metrics )
415415
416- waitPeersCtx , cancel := context .WithTimeout (s .ctx , peerstoreWaitAddrsTimeout )
417- defer cancel ()
418-
419- peerMultiaddrs , err := buildFullMAs (waitPeerAddrs (waitPeersCtx , s .host .Peerstore (), peerID ), peerID )
416+ peerMultiaddrs , err := s .peerMultiaddrs (s .ctx , stream .Conn (), peerID )
420417 if err != nil {
421418 s .logger .Debug ("stream handler: handshake: build remote multiaddrs" , "peer_id" , peerID , "error" , err )
422419 s .logger .Error (nil , "stream handler: handshake: build remote multiaddrs" , "peer_id" , peerID )
@@ -425,18 +422,6 @@ func (s *Service) handleIncoming(stream network.Stream) {
425422 return
426423 }
427424
428- if len (peerMultiaddrs ) == 0 {
429- fullRemoteAddress , err := buildFullMA (stream .Conn ().RemoteMultiaddr (), peerID )
430- if err != nil {
431- s .logger .Debug ("stream handler: handshake: build full remote peer multi address" , "peer_id" , peerID , "error" , err )
432- s .logger .Error (nil , "stream handler: handshake: build full remote peer multi address" , "peer_id" , peerID )
433- _ = handshakeStream .Reset ()
434- _ = s .host .Network ().ClosePeer (peerID )
435- return
436- }
437- peerMultiaddrs = append (peerMultiaddrs , fullRemoteAddress )
438- }
439-
440425 i , err := s .handshakeService .Handle (
441426 s .ctx ,
442427 handshakeStream ,
@@ -829,24 +814,13 @@ func (s *Service) Connect(ctx context.Context, addrs []ma.Multiaddr) (address *b
829814
830815 handshakeStream := newStream (stream , s .metrics )
831816
832- waitPeersCtx , cancel := context .WithTimeout (ctx , peerstoreWaitAddrsTimeout )
833- defer cancel ()
834-
835- peerMultiaddrs , err := buildFullMAs (waitPeerAddrs (waitPeersCtx , s .host .Peerstore (), peerID ), peerID )
817+ peerMultiaddrs , err := s .peerMultiaddrs (ctx , stream .Conn (), peerID )
836818 if err != nil {
837819 _ = handshakeStream .Reset ()
838820 _ = s .host .Network ().ClosePeer (peerID )
839821 return nil , fmt .Errorf ("build peer multiaddrs: %w" , err )
840822 }
841823
842- if len (peerMultiaddrs ) == 0 {
843- fullRemoteAddress , err := buildFullMA (stream .Conn ().RemoteMultiaddr (), peerID )
844- if err != nil {
845- return nil , fmt .Errorf ("build full remote peer multi address: %w" , err )
846- }
847- peerMultiaddrs = append (peerMultiaddrs , fullRemoteAddress )
848- }
849-
850824 i , err := s .handshakeService .Handshake (
851825 s .ctx ,
852826 handshakeStream ,
@@ -1217,6 +1191,29 @@ func (s *Service) determineCurrentNetworkStatus(err error) error {
12171191 return err
12181192}
12191193
1194+ // peerMultiaddrs builds full multiaddresses for a peer given information from
1195+ // libp2p host peerstore and falling back to the remote address from the
1196+ // connection.
1197+ func (s * Service ) peerMultiaddrs (ctx context.Context , conn network.Conn , peerID libp2ppeer.ID ) ([]ma.Multiaddr , error ) {
1198+ waitPeersCtx , cancel := context .WithTimeout (ctx , peerstoreWaitAddrsTimeout )
1199+ defer cancel ()
1200+
1201+ peerMultiaddrs , err := buildFullMAs (waitPeerAddrs (waitPeersCtx , s .host .Peerstore (), peerID ), peerID )
1202+ if err != nil {
1203+ return nil , fmt .Errorf ("build peer multiaddrs: %w" , err )
1204+ }
1205+
1206+ if len (peerMultiaddrs ) == 0 {
1207+ fullRemoteAddress , err := buildFullMA (conn .RemoteMultiaddr (), peerID )
1208+ if err != nil {
1209+ return nil , fmt .Errorf ("build full remote peer multi address: %w" , err )
1210+ }
1211+ peerMultiaddrs = append (peerMultiaddrs , fullRemoteAddress )
1212+ }
1213+
1214+ return peerMultiaddrs , nil
1215+ }
1216+
12201217var version270 = * semver .Must (semver .NewVersion ("2.7.0" ))
12211218
12221219func (s * Service ) bee260BackwardCompatibility (peerID libp2ppeer.ID ) bool {
0 commit comments