Skip to content

Commit ed8add5

Browse files
committed
fix: address pull review comments
1 parent c9dbd16 commit ed8add5

File tree

2 files changed

+28
-42
lines changed

2 files changed

+28
-42
lines changed

pkg/p2p/libp2p/internal/handshake/handshake.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package handshake
66

77
import (
8+
"cmp"
89
"context"
910
"errors"
1011
"fmt"
@@ -200,13 +201,7 @@ func (s *Service) Handshake(ctx context.Context, stream p2p.Stream, peerMultiadd
200201

201202
// sort to remove potential duplicates
202203
slices.SortFunc(advertisableUnderlays, func(a, b ma.Multiaddr) int {
203-
if a.Equal(b) {
204-
return 0
205-
}
206-
if a.String() < b.String() {
207-
return -1
208-
}
209-
return 1
204+
return cmp.Compare(a.String(), b.String())
210205
})
211206
// remove duplicates
212207
advertisableUnderlays = slices.CompactFunc(advertisableUnderlays, func(a, b ma.Multiaddr) bool {
@@ -304,13 +299,7 @@ func (s *Service) Handle(ctx context.Context, stream p2p.Stream, peerMultiaddrs
304299

305300
// sort to remove potential duplicates
306301
slices.SortFunc(advertisableUnderlays, func(a, b ma.Multiaddr) int {
307-
if a.Equal(b) {
308-
return 0
309-
}
310-
if a.String() < b.String() {
311-
return -1
312-
}
313-
return 1
302+
return cmp.Compare(a.String(), b.String())
314303
})
315304
// remove duplicates
316305
advertisableUnderlays = slices.CompactFunc(advertisableUnderlays, func(a, b ma.Multiaddr) bool {

pkg/p2p/libp2p/libp2p.go

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
12201217
var version270 = *semver.Must(semver.NewVersion("2.7.0"))
12211218

12221219
func (s *Service) bee260BackwardCompatibility(peerID libp2ppeer.ID) bool {

0 commit comments

Comments
 (0)