Skip to content

Commit 8bc76c3

Browse files
committed
chore: update go-multiaddr to v0.15.0
1 parent 90bb5ef commit 8bc76c3

32 files changed

+189
-155
lines changed

Diff for: core/peer/addrinfo.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func AddrInfoToP2pAddrs(pi *AddrInfo) ([]ma.Multiaddr, error) {
109109
return nil, err
110110
}
111111
if len(pi.Addrs) == 0 {
112-
return []ma.Multiaddr{p2ppart}, nil
112+
return []ma.Multiaddr{p2ppart.Multiaddr()}, nil
113113
}
114114
addrs := make([]ma.Multiaddr, 0, len(pi.Addrs))
115115
for _, addr := range pi.Addrs {

Diff for: go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ require (
3838
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b
3939
github.com/mr-tron/base58 v1.2.0
4040
github.com/multiformats/go-base32 v0.1.0
41-
github.com/multiformats/go-multiaddr v0.14.0
41+
github.com/multiformats/go-multiaddr v0.15.0
4242
github.com/multiformats/go-multiaddr-dns v0.4.1
4343
github.com/multiformats/go-multiaddr-fmt v0.1.0
4444
github.com/multiformats/go-multibase v0.2.0

Diff for: go.sum

+4-2
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,10 @@ github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYg
230230
github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
231231
github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
232232
github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo=
233-
github.com/multiformats/go-multiaddr v0.14.0 h1:bfrHrJhrRuh/NXH5mCnemjpbGjzRw/b+tJFOD41g2tU=
234-
github.com/multiformats/go-multiaddr v0.14.0/go.mod h1:6EkVAxtznq2yC3QT5CM1UTAwG0GTP3EWAIcjHuzQ+r4=
233+
github.com/multiformats/go-multiaddr v0.14.1-0.20250224201533-d8782ae271bb h1:hweBXQbzp/PeA2mo/ijpWVDkFWqBLNGsJY0ODVArXQM=
234+
github.com/multiformats/go-multiaddr v0.14.1-0.20250224201533-d8782ae271bb/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0=
235+
github.com/multiformats/go-multiaddr v0.15.0 h1:zB/HeaI/apcZiTDwhY5YqMvNVl/oQYvs3XySU+qeAVo=
236+
github.com/multiformats/go-multiaddr v0.15.0/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0=
235237
github.com/multiformats/go-multiaddr-dns v0.4.1 h1:whi/uCLbDS3mSEUMb1MsoT4uzUeZB0N32yzufqS0i5M=
236238
github.com/multiformats/go-multiaddr-dns v0.4.1/go.mod h1:7hfthtB4E4pQwirrz+J0CcDUfbWzTqEzVyYKKIKpgkc=
237239
github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E=

Diff for: p2p/host/autonat/svc.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@ func (as *autoNATService) handleDial(p peer.ID, obsaddr ma.Multiaddr, mpi *pb.Me
167167
default:
168168
continue
169169
}
170-
addr = hostIP
171-
if rest != nil {
170+
addr = hostIP.Multiaddr()
171+
if len(rest) > 0 {
172172
addr = addr.Encapsulate(rest)
173173
}
174174
}

Diff for: p2p/host/autorelay/addrsplosion_test.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"testing"
55

66
ma "github.com/multiformats/go-multiaddr"
7-
"github.com/stretchr/testify/require"
7+
matest "github.com/multiformats/go-multiaddr/matest"
88
)
99

1010
func TestCleanupAddrs(t *testing.T) {
@@ -21,7 +21,7 @@ func TestCleanupAddrs(t *testing.T) {
2121
"/ip4/1.2.3.4/udp/4002/quic-v1",
2222
"/dnsaddr/somedomain.com/tcp/4002/ws",
2323
)
24-
require.ElementsMatch(t, clean, cleanupAddressSet(addrs), "cleaned up set doesn't match expected")
24+
matest.AssertMultiaddrsMatch(t, clean, cleanupAddressSet(addrs))
2525
})
2626

2727
t.Run("with default port", func(t *testing.T) {
@@ -38,7 +38,7 @@ func TestCleanupAddrs(t *testing.T) {
3838
"/ip4/1.2.3.4/tcp/4001",
3939
"/ip4/1.2.3.4/udp/4002/quic-v1",
4040
)
41-
require.ElementsMatch(t, clean, cleanupAddressSet(addrs), "cleaned up set doesn't match expected")
41+
matest.AssertMultiaddrsMatch(t, clean, cleanupAddressSet(addrs))
4242
})
4343

4444
t.Run("with default port, but no private addrs", func(t *testing.T) {
@@ -54,7 +54,7 @@ func TestCleanupAddrs(t *testing.T) {
5454
"/ip4/1.2.3.4/tcp/4001",
5555
"/ip4/1.2.3.4/udp/4002/quic-v1",
5656
)
57-
require.ElementsMatch(t, clean, cleanupAddressSet(addrs), "cleaned up set doesn't match expected")
57+
matest.AssertMultiaddrsMatch(t, clean, cleanupAddressSet(addrs))
5858
})
5959

6060
t.Run("with non-standard port", func(t *testing.T) {
@@ -68,7 +68,9 @@ func TestCleanupAddrs(t *testing.T) {
6868
clean := makeAddrList(
6969
"/ip4/1.2.3.4/tcp/12345",
7070
)
71-
require.ElementsMatch(t, clean, cleanupAddressSet(addrs), "cleaned up set doesn't match expected")
71+
if !matest.AssertEqualMultiaddrs(t, clean, cleanupAddressSet(addrs)) {
72+
t.Log("cleaned up set doesn't match expected")
73+
}
7274
})
7375

7476
t.Run("with a clean address set", func(t *testing.T) {
@@ -77,7 +79,7 @@ func TestCleanupAddrs(t *testing.T) {
7779
"/ip4/1.2.3.4/tcp/4001",
7880
"/ip4/1.2.3.4/udp/4001/quic-v1",
7981
)
80-
require.ElementsMatch(t, addrs, cleanupAddressSet(addrs), "cleaned up set doesn't match expected")
82+
matest.AssertMultiaddrsMatch(t, addrs, cleanupAddressSet(addrs))
8183
})
8284
}
8385

Diff for: p2p/host/basic/basic_host.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -975,11 +975,11 @@ func (h *BasicHost) AllAddrs() []ma.Multiaddr {
975975
for _, obsMaddr := range observed {
976976
// Extract a public observed addr.
977977
ip, _ := ma.SplitFirst(obsMaddr)
978-
if ip == nil || !manet.IsPublicAddr(ip) {
978+
if ip == nil || !manet.IsPublicAddr(ip.Multiaddr()) {
979979
continue
980980
}
981981

982-
finalAddrs = append(finalAddrs, ma.Join(ip, extMaddrNoIP))
982+
finalAddrs = append(finalAddrs, ip.Encapsulate(extMaddrNoIP))
983983
}
984984
}
985985
}

Diff for: p2p/host/basic/basic_host_test.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/libp2p/go-libp2p/p2p/protocol/identify"
2626

2727
ma "github.com/multiformats/go-multiaddr"
28+
"github.com/multiformats/go-multiaddr/matest"
2829

2930
"github.com/stretchr/testify/assert"
3031
"github.com/stretchr/testify/require"
@@ -300,7 +301,7 @@ func TestAllAddrsUnique(t *testing.T) {
300301
}()
301302
close(sendNewAddrs)
302303
require.Len(t, h.Addrs(), 2)
303-
require.ElementsMatch(t, []ma.Multiaddr{ma.StringCast("/ip4/1.2.3.4/tcp/1"), ma.StringCast("/ip4/1.2.3.4/udp/1/quic-v1")}, h.Addrs())
304+
matest.AssertEqualMultiaddrs(t, []ma.Multiaddr{ma.StringCast("/ip4/1.2.3.4/tcp/1"), ma.StringCast("/ip4/1.2.3.4/udp/1/quic-v1")}, h.Addrs())
304305
time.Sleep(2*addrChangeTickrInterval + 1*time.Second) // the background loop runs every 5 seconds. Wait for 2x that time.
305306
close(done)
306307
cnt := <-out
@@ -650,13 +651,13 @@ func TestAddrChangeImmediatelyIfAddressNonEmpty(t *testing.T) {
650651

651652
// assert it's on the signed record
652653
rc := peerRecordFromEnvelope(t, evt.SignedPeerRecord)
653-
require.Equal(t, taddrs, rc.Addrs)
654+
matest.AssertEqualMultiaddrs(t, taddrs, rc.Addrs)
654655

655656
// assert it's in the peerstore
656657
ev := h.Peerstore().(peerstore.CertifiedAddrBook).GetPeerRecord(h.ID())
657658
require.NotNil(t, ev)
658659
rc = peerRecordFromEnvelope(t, ev)
659-
require.Equal(t, taddrs, rc.Addrs)
660+
matest.AssertEqualMultiaddrs(t, taddrs, rc.Addrs)
660661
}
661662

662663
func TestStatefulAddrEvents(t *testing.T) {
@@ -759,13 +760,13 @@ func TestHostAddrChangeDetection(t *testing.T) {
759760

760761
// assert it's on the signed record
761762
rc := peerRecordFromEnvelope(t, evt.SignedPeerRecord)
762-
require.Equal(t, addrSets[i], rc.Addrs)
763+
matest.AssertMultiaddrsMatch(t, addrSets[i], rc.Addrs)
763764

764765
// assert it's in the peerstore
765766
ev := h.Peerstore().(peerstore.CertifiedAddrBook).GetPeerRecord(h.ID())
766767
require.NotNil(t, ev)
767768
rc = peerRecordFromEnvelope(t, ev)
768-
require.Equal(t, addrSets[i], rc.Addrs)
769+
matest.AssertMultiaddrsMatch(t, addrSets[i], rc.Addrs)
769770
}
770771
}
771772

Diff for: p2p/host/basic/natmgr.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func (nmgr *natManager) doSync() {
151151
for _, maddr := range nmgr.net.ListenAddresses() {
152152
// Strip the IP
153153
maIP, rest := ma.SplitFirst(maddr)
154-
if maIP == nil || rest == nil {
154+
if maIP == nil || len(rest) == 0 {
155155
continue
156156
}
157157

Diff for: p2p/host/basic/natmgr_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,23 +42,23 @@ func TestMapping(t *testing.T) {
4242
externalAddr := netip.AddrPortFrom(netip.AddrFrom4([4]byte{1, 2, 3, 4}), 4321)
4343
// pretend that we have a TCP mapping
4444
mockNAT.EXPECT().GetMapping("tcp", 1234).Return(externalAddr, true)
45-
require.Equal(t, ma.StringCast("/ip4/1.2.3.4/tcp/4321"), m.GetMapping(ma.StringCast("/ip4/0.0.0.0/tcp/1234")))
45+
require.Equal(t, "/ip4/1.2.3.4/tcp/4321", m.GetMapping(ma.StringCast("/ip4/0.0.0.0/tcp/1234")).String())
4646

4747
// pretend that we have a QUIC mapping
4848
mockNAT.EXPECT().GetMapping("udp", 1234).Return(externalAddr, true)
49-
require.Equal(t, ma.StringCast("/ip4/1.2.3.4/udp/4321/quic-v1"), m.GetMapping(ma.StringCast("/ip4/0.0.0.0/udp/1234/quic-v1")))
49+
require.Equal(t, "/ip4/1.2.3.4/udp/4321/quic-v1", m.GetMapping(ma.StringCast("/ip4/0.0.0.0/udp/1234/quic-v1")).String())
5050

5151
// pretend that there's no mapping
5252
mockNAT.EXPECT().GetMapping("tcp", 1234).Return(netip.AddrPort{}, false)
5353
require.Nil(t, m.GetMapping(ma.StringCast("/ip4/0.0.0.0/tcp/1234")))
5454

5555
// make sure this works for WebSocket addresses as well
5656
mockNAT.EXPECT().GetMapping("tcp", 1234).Return(externalAddr, true)
57-
require.Equal(t, ma.StringCast("/ip4/1.2.3.4/tcp/4321/ws"), m.GetMapping(ma.StringCast("/ip4/0.0.0.0/tcp/1234/ws")))
57+
require.Equal(t, "/ip4/1.2.3.4/tcp/4321/ws", m.GetMapping(ma.StringCast("/ip4/0.0.0.0/tcp/1234/ws")).String())
5858

5959
// make sure this works for WebTransport addresses as well
6060
mockNAT.EXPECT().GetMapping("udp", 1234).Return(externalAddr, true)
61-
require.Equal(t, ma.StringCast("/ip4/1.2.3.4/udp/4321/quic-v1/webtransport"), m.GetMapping(ma.StringCast("/ip4/0.0.0.0/udp/1234/quic-v1/webtransport")))
61+
require.Equal(t, "/ip4/1.2.3.4/udp/4321/quic-v1/webtransport", m.GetMapping(ma.StringCast("/ip4/0.0.0.0/udp/1234/quic-v1/webtransport")).String())
6262
}
6363

6464
func TestAddAndRemoveListeners(t *testing.T) {

Diff for: p2p/http/libp2phttp.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ func relativeMultiaddrURIToAbs(original *url.URL, relative *url.URL) (*url.URL,
532532
withoutPath, _ := ma.SplitFunc(originalMa, func(c ma.Component) bool {
533533
return c.Protocol().Code == ma.P_HTTP_PATH
534534
})
535-
withNewPath := withoutPath.Encapsulate(relativePathComponent)
535+
withNewPath := withoutPath.AppendComponent(relativePathComponent)
536536
return url.Parse("multiaddr:" + withNewPath.String())
537537
}
538538

@@ -937,10 +937,12 @@ func normalizeHTTPMultiaddr(addr ma.Multiaddr) (ma.Multiaddr, bool) {
937937

938938
_, afterHTTPS := ma.SplitFirst(afterIncludingHTTPS)
939939
if afterHTTPS == nil {
940-
return ma.Join(beforeHTTPS, tlsComponent, httpComponent), isHTTPMultiaddr
940+
return beforeHTTPS.AppendComponent(tlsComponent, httpComponent), isHTTPMultiaddr
941941
}
942942

943-
return ma.Join(beforeHTTPS, tlsComponent, httpComponent, afterHTTPS), isHTTPMultiaddr
943+
t := beforeHTTPS.AppendComponent(tlsComponent, httpComponent)
944+
t = append(t, afterHTTPS...)
945+
return t, isHTTPMultiaddr
944946
}
945947

946948
// getAndStorePeerMetadata looks up the protocol path in the well-known mapping and

Diff for: p2p/metricshelper/conn.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ func GetTransport(a ma.Multiaddr) string {
88
if a == nil {
99
return "other"
1010
}
11-
for _, t := range transports {
12-
if _, err := a.ValueForProtocol(t); err == nil {
13-
return ma.ProtocolWithCode(t).Name
11+
for i := len(a) - 1; i >= 0; i-- {
12+
p := a[i].Protocol()
13+
for _, t := range transports {
14+
if p.Code == t {
15+
return p.Name
16+
}
1417
}
1518
}
1619
return "other"

Diff for: p2p/net/swarm/dial_worker_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -578,11 +578,11 @@ func checkDialWorkerLoopScheduling(t *testing.T, s1, s2 *Swarm, tc schedulingTes
578578
// failDials is used to track dials which should fail in the future
579579
// at appropriate moment a message is sent to dialState.ch to trigger
580580
// failure
581-
failDials := make(map[ma.Multiaddr]dialState)
581+
failDials := make(map[*ma.Multiaddr]dialState)
582582
// recvCh is used to receive dial notifications for dials that will fail
583583
recvCh := make(chan struct{}, 100)
584584
// allDials tracks all pending dials
585-
allDials := make(map[ma.Multiaddr]dialState)
585+
allDials := make(map[*ma.Multiaddr]dialState)
586586
// addrs are the peer addresses the swarm will use for dialing
587587
addrs := make([]ma.Multiaddr, 0)
588588
// create pending dials
@@ -610,7 +610,7 @@ func checkDialWorkerLoopScheduling(t *testing.T, s1, s2 *Swarm, tc schedulingTes
610610
}
611611
addrs = append(addrs, inp.addr)
612612
// add to pending dials
613-
allDials[inp.addr] = dialState{
613+
allDials[&inp.addr] = dialState{
614614
ch: failCh,
615615
addr: inp.addr,
616616
delay: inp.delay,
@@ -695,7 +695,7 @@ loop:
695695
failDials[a] = dialState{
696696
ch: ds.ch,
697697
failAt: cl.Now().Add(ds.failAfter),
698-
addr: a,
698+
addr: *a,
699699
delay: ds.delay,
700700
}
701701
}

Diff for: p2p/net/swarm/swarm_dial_test.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
ma "github.com/multiformats/go-multiaddr"
2828
madns "github.com/multiformats/go-multiaddr-dns"
29+
matest "github.com/multiformats/go-multiaddr/matest"
2930
"github.com/stretchr/testify/require"
3031
)
3132

@@ -188,12 +189,12 @@ func TestAddrResolution(t *testing.T) {
188189
require.NoError(t, err)
189190

190191
require.Len(t, mas, 1)
191-
require.Contains(t, mas, addr2)
192+
matest.AssertMultiaddrsContain(t, mas, addr2)
192193

193194
addrs := s.peers.Addrs(p1)
194195
require.Len(t, addrs, 2)
195-
require.Contains(t, addrs, addr1)
196-
require.Contains(t, addrs, addr2)
196+
matest.AssertMultiaddrsContain(t, addrs, addr1)
197+
matest.AssertMultiaddrsContain(t, addrs, addr2)
197198
}
198199

199200
func TestAddrResolutionRecursive(t *testing.T) {
@@ -234,8 +235,8 @@ func TestAddrResolutionRecursive(t *testing.T) {
234235

235236
addrs1 := s.Peerstore().Addrs(pi1.ID)
236237
require.Len(t, addrs1, 2)
237-
require.Contains(t, addrs1, addr1)
238-
require.Contains(t, addrs1, addr2)
238+
matest.AssertMultiaddrsContain(t, addrs1, addr1)
239+
matest.AssertMultiaddrsContain(t, addrs1, addr2)
239240

240241
pi2, err := peer.AddrInfoFromP2pAddr(p2paddr2)
241242
require.NoError(t, err)
@@ -247,7 +248,7 @@ func TestAddrResolutionRecursive(t *testing.T) {
247248

248249
addrs2 := s.Peerstore().Addrs(pi2.ID)
249250
require.Len(t, addrs2, 1)
250-
require.Contains(t, addrs2, addr1)
251+
matest.AssertMultiaddrsContain(t, addrs2, addr1)
251252
}
252253

253254
// see https://github.com/libp2p/go-libp2p/issues/2562

Diff for: p2p/protocol/circuitv2/client/conn.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,10 @@ func (c *Conn) RemoteMultiaddr() ma.Multiaddr {
8383
c.stream.Conn().RemotePeer().String(),
8484
)
8585
if err != nil {
86-
panic(err)
86+
log.Error(err)
87+
return ma.Join(c.stream.Conn().RemoteMultiaddr(), circuitAddr)
8788
}
88-
return ma.Join(c.stream.Conn().RemoteMultiaddr(), relayAddr, circuitAddr)
89+
return ma.Join(c.stream.Conn().RemoteMultiaddr(), relayAddr.Multiaddr(), circuitAddr)
8990
}
9091

9192
func (c *Conn) LocalMultiaddr() ma.Multiaddr {

0 commit comments

Comments
 (0)