fix: go-libp2p v0.44 with self-healing UPnP port mappings (#11032)
* chore(deps): update go-libp2p to v0.44.0 - includes self-healing UPnP port mappings after router restarts - update go-netroute to v0.3.0 - update quic-go to v0.55.0 - add changelog entry for UPnP fix * docs: improve provide and UPnP clarity in changelog and docs - add alert polling rationale to changelog - add UPnP config note with default clarification - clarify sweep timing and prefix length explanations - add concrete examples for time offset and record holders - improve workers stats formatting - add See Also section to provide-stats.md * docs: add RISC-V prebuilt binaries to changelog and README - highlight linux-riscv64 availability with open hardware context - update README with arm64 builds, remove 32-bit examples
Marcin Rataj committed
Oct 25, 2025 at 01:13 UTC
ae78c7821c98b00438b2cb32c5699a40276299b7
10 files changed
+108
-52
README.md
+7
-7
@@ -191,13 +191,13 @@ $ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSION
191
To download a given build of a version:
192
193
```console
194
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32-bit build
195
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-amd64.tar.gz # darwin 64-bit build
196
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64-bit build
197
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # linux 32-bit build
198
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64.tar.gz # linux 64-bit build
199
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm.tar.gz # linux arm build
200
-$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # windows 64-bit build
194
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-amd64.tar.gz # darwin amd64 build
195
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-arm64.tar.gz # darwin arm64 build
196
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd amd64 build
197
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64.tar.gz # linux amd64 build
198
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-riscv64.tar.gz # linux riscv64 build
199
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm64.tar.gz # linux arm64 build
200
+$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # windows amd64 build
201
```
202
203
### Unofficial Linux packages
docs/changelogs/v0.39.md
+43
-2
@@ -12,6 +12,8 @@ This release was brought to you by the [Shipyard](https://ipshipyard.com/) team.
12
- [🔦 Highlights](#-highlights)
13
- [📊 Detailed statistics for Sweep provider with `ipfs provide stat`](#-detailed-statistics-for-sweep-provider-with-ipfs-provide-stat)
14
- [🔔 Sweep provider slow reprovide warnings](#-sweep-provider-slow-reprovide-warnings)
15
+ - [🔧 Fixed UPnP port forwarding after router restarts](#-fixed-upnp-port-forwarding-after-router-restarts)
16
+ - [🖥️ RISC-V support with prebuilt binaries](#️-risc-v-support-with-prebuilt-binaries)
17
- [🪦 Deprecated `go-ipfs` name no longer published](#-deprecated-go-ipfs-name-no-longer-published)
18
- [📦️ Important dependency updates](#-important-dependency-updates)
19
- [📝 Changelog](#-changelog)
@@ -74,8 +76,45 @@ a warning displays with:
76
- Recommended solutions: increase `Provide.DHT.MaxWorkers` or `Provide.DHT.DedicatedPeriodicWorkers`
77
- Command to monitor real-time progress: `watch ipfs provide stat --all --compact`
78
77
-The alert polls every 15 minutes and only triggers after sustained growth
78
-across multiple intervals. The legacy provider is unaffected by this change.
79
+The alert polls every 15 minutes (to avoid alert fatigue while catching
80
+persistent issues) and only triggers after sustained growth across multiple
81
+intervals. The legacy provider is unaffected by this change.
82
+
83
+#### 🔧 Fixed UPnP port forwarding after router restarts
84
+
85
+Kubo now automatically recovers UPnP port mappings when routers restart or
86
+become temporarily unavailable, fixing a critical connectivity issue that
87
+affected self-hosted nodes behind NAT.
88
+
89
+**Previous behavior:** When a UPnP-enabled router restarted, Kubo would lose
90
+its port mapping and fail to re-establish it automatically. Nodes would become
91
+unreachable to the network until the daemon was manually restarted, forcing
92
+reliance on relay connections which degraded performance.
93
+
94
+**New behavior:** The upgraded go-libp2p (v0.44.0) includes [Shipyard's fix](https://github.com/libp2p/go-libp2p/pull/3367)
95
+for self-healing NAT mappings that automatically rediscover and re-establish
96
+port forwarding after router events. Nodes now maintain public connectivity
97
+without manual intervention.
98
+
99
+> [!NOTE]
100
+> If your node runs behind a router and you haven't manually configured port
101
+> forwarding, make sure [`Swarm.DisableNatPortMap=false`](https://github.com/ipfs/kubo/blob/master/docs/config.md#swarmdisablenatportmap)
102
+> so UPnP can automatically handle port mapping (this is the default).
103
+
104
+This significantly improves reliability for desktop and self-hosted IPFS nodes
105
+using UPnP for NAT traversal.
106
+
107
+#### 🖥️ RISC-V support with prebuilt binaries
108
+
109
+Kubo now provides official `linux-riscv64` prebuilt binaries with every release,
110
+bringing IPFS to [RISC-V](https://en.wikipedia.org/wiki/RISC-V) open hardware.
111
+
112
+As RISC-V single-board computers and embedded systems become more accessible,
113
+it's good to see the distributed web supported on open hardware architectures -
114
+a natural pairing of open technologies.
115
+
116
+Download from <https://dist.ipfs.tech/kubo/> or
117
+<https://github.com/ipfs/kubo/releases> and look for the `linux-riscv64` archive.
118
119
#### 🪦 Deprecated `go-ipfs` name no longer published
120
@@ -90,6 +129,8 @@ For Docker users, the legacy `ipfs/go-ipfs` image name now shows a deprecation n
129
130
### 📦️ Important dependency updates
131
132
+- update `go-libp2p` to [v0.44.0](https://github.com/libp2p/go-libp2p/releases/tag/v0.44.0) with self-healing UPnP port mappings
133
+- update `quic-go` to [v0.55.0](https://github.com/quic-go/quic-go/releases/tag/v0.55.0)
134
- update `go-ds-pebble` to [v0.5.3](https://github.com/ipfs/go-ds-pebble/releases/tag/v0.5.3)
135
136
### 📝 Changelog
docs/config.md
+3
-3
@@ -1920,7 +1920,7 @@ map CIDs to your peer ID, enabling content discovery across the network.
1920
While designed to support multiple routing systems in the future, the current
1921
default configuration only supports [providing to the Amino DHT](#providedht).
1922
1923
-<!-- TODO: See the [Reprovide Sweep blog post](https://blog.ipfs.tech/2025-reprovide-sweep/) for detailed performance comparisons. -->
1923
+<!-- TODO: See the [Reprovide Sweep blog post](https://github.com/ipshipyard/ipshipyard.com/pull/8) for detailed performance comparisons. -->
1924
1925
### `Provide.Enabled`
1926
@@ -2026,8 +2026,8 @@ overwhelming the network with unnecessary announcements.
2026
**With sweep mode enabled
2027
([`Provide.DHT.SweepEnabled`](#providedhtsweepenabled)):** The system spreads
2028
reprovide operations smoothly across this entire interval. Each keyspace region
2029
-is reprovided at scheduled times throughout the period, ensuring announcements
2030
-periodically happen every interval.
2029
+is reprovided at scheduled times throughout the period, ensuring each region's
2030
+announcements complete before records expire.
2031
2032
**With legacy mode:** The system attempts to reprovide all CIDs as quickly as
2033
possible at the start of each interval. If reproviding takes longer than this
docs/examples/kubo-as-a-library/go.mod
+3
-3
@@ -9,7 +9,7 @@ replace github.com/ipfs/kubo => ./../../..
9
require (
10
github.com/ipfs/boxo v0.35.0
11
github.com/ipfs/kubo v0.0.0-00010101000000-000000000000
12
- github.com/libp2p/go-libp2p v0.43.0
12
+ github.com/libp2p/go-libp2p v0.44.0
13
github.com/multiformats/go-multiaddr v0.16.1
14
)
15
@@ -123,7 +123,7 @@ require (
123
github.com/libp2p/go-libp2p-routing-helpers v0.7.5 // indirect
124
github.com/libp2p/go-libp2p-xor v0.1.0 // indirect
125
github.com/libp2p/go-msgio v0.3.0 // indirect
126
- github.com/libp2p/go-netroute v0.2.2 // indirect
126
+ github.com/libp2p/go-netroute v0.3.0 // indirect
127
github.com/libp2p/go-reuseport v0.4.0 // indirect
128
github.com/libp2p/go-yamux/v5 v5.0.1 // indirect
129
github.com/libp2p/zeroconf/v2 v2.2.0 // indirect
@@ -177,7 +177,7 @@ require (
177
github.com/prometheus/common v0.66.1 // indirect
178
github.com/prometheus/procfs v0.17.0 // indirect
179
github.com/quic-go/qpack v0.5.1 // indirect
180
- github.com/quic-go/quic-go v0.54.1 // indirect
180
+ github.com/quic-go/quic-go v0.55.0 // indirect
181
github.com/quic-go/webtransport-go v0.9.0 // indirect
182
github.com/rogpeppe/go-internal v1.14.1 // indirect
183
github.com/spaolacci/murmur3 v1.1.0 // indirect
docs/examples/kubo-as-a-library/go.sum
+8
-6
@@ -428,8 +428,8 @@ github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZ
428
github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs=
429
github.com/libp2p/go-flow-metrics v0.3.0 h1:q31zcHUvHnwDO0SHaukewPYgwOBSxtt830uJtUx6784=
430
github.com/libp2p/go-flow-metrics v0.3.0/go.mod h1:nuhlreIwEguM1IvHAew3ij7A8BMlyHQJ279ao24eZZo=
431
-github.com/libp2p/go-libp2p v0.43.0 h1:b2bg2cRNmY4HpLK8VHYQXLX2d3iND95OjodLFymvqXU=
432
-github.com/libp2p/go-libp2p v0.43.0/go.mod h1:IiSqAXDyP2sWH+J2gs43pNmB/y4FOi2XQPbsb+8qvzc=
431
+github.com/libp2p/go-libp2p v0.44.0 h1:5Gtt8OrF8yiXmH+Mx4+/iBeFRMK1TY3a8OrEBDEqAvs=
432
+github.com/libp2p/go-libp2p v0.44.0/go.mod h1:NovCojezAt4dnDd4fH048K7PKEqH0UFYYqJRjIIu8zc=
433
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
434
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
435
github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g=
@@ -455,8 +455,8 @@ github.com/libp2p/go-libp2p-xor v0.1.0/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQ
455
github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
456
github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
457
github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM=
458
-github.com/libp2p/go-netroute v0.2.2 h1:Dejd8cQ47Qx2kRABg6lPwknU7+nBnFRpko45/fFPuZ8=
459
-github.com/libp2p/go-netroute v0.2.2/go.mod h1:Rntq6jUAH0l9Gg17w5bFGhcC9a+vk4KNXs6s7IljKYE=
458
+github.com/libp2p/go-netroute v0.3.0 h1:nqPCXHmeNmgTJnktosJ/sIef9hvwYCrsLxXmfNks/oc=
459
+github.com/libp2p/go-netroute v0.3.0/go.mod h1:Nkd5ShYgSMS5MUKy/MU2T57xFoOKvvLR92Lic48LEyA=
460
github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
461
github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
462
github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s=
@@ -469,6 +469,8 @@ github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm
469
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
470
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
471
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
472
+github.com/marcopolo/simnet v0.0.1 h1:rSMslhPz6q9IvJeFWDoMGxMIrlsbXau3NkuIXHGJxfg=
473
+github.com/marcopolo/simnet v0.0.1/go.mod h1:WDaQkgLAjqDUEBAOXz22+1j6wXKfGlC5sD5XWt3ddOs=
474
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk=
475
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU=
476
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -649,8 +651,8 @@ github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7D
651
github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
652
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
653
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
652
-github.com/quic-go/quic-go v0.54.1 h1:4ZAWm0AhCb6+hE+l5Q1NAL0iRn/ZrMwqHRGQiFwj2eg=
653
-github.com/quic-go/quic-go v0.54.1/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
654
+github.com/quic-go/quic-go v0.55.0 h1:zccPQIqYCXDt5NmcEabyYvOnomjs8Tlwl7tISjJh9Mk=
655
+github.com/quic-go/quic-go v0.55.0/go.mod h1:DR51ilwU1uE164KuWXhinFcKWGlEjzys2l8zUl5Ss1U=
656
github.com/quic-go/webtransport-go v0.9.0 h1:jgys+7/wm6JarGDrW+lD/r9BGqBAmqY/ssklE09bA70=
657
github.com/quic-go/webtransport-go v0.9.0/go.mod h1:4FUYIiUc75XSsF6HShcLeXXYZJ9AGwo/xh3L8M/P1ao=
658
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
docs/provide-stats.md
+22
-10
@@ -45,8 +45,9 @@ a batch for efficient processing.
45
46
Average length of binary prefixes identifying the scheduled regions. Each
47
keyspace region is identified by a binary prefix, and this shows the average
48
-prefix length across all regions in the schedule. Longer prefixes indicate more
49
-DHT servers in the swarm.
48
+prefix length across all regions in the schedule. Longer prefixes indicate the
49
+keyspace is divided into more regions (because there are more DHT servers in the
50
+swarm to distribute records across).
51
52
### Next region prefix
53
@@ -65,7 +66,8 @@ start timestamp.
66
67
### Current time offset
68
68
-Elapsed time in the current reprovide cycle, showing cycle progress.
69
+Elapsed time in the current reprovide cycle, showing cycle progress (e.g., '11h'
70
+means 11 hours into a 22-hour cycle, roughly halfway through).
71
72
### Cycle started
73
@@ -84,7 +86,8 @@ DHT servers. In practice, this is often lower than the [replication
86
factor](#replication-factor) due to unreachable peers or timeouts. Matching the
87
replication factor would indicate all DHT servers are reachable.
88
87
-Note: some holders may have gone offline since receiving the record.
89
+Note: this counts successful sends; some DHT servers may have gone offline
90
+afterward, so actual availability may be lower.
91
92
### Peers swept
93
@@ -175,14 +178,23 @@ Number of idle workers not reserved for periodic or burst tasks.
178
179
### Workers stats
180
178
-Breakdown of worker status by type (periodic for scheduled reprovides, burst
179
-for initial provides). For each: active (currently processing), dedicated
180
-(reserved for this type), available (idle dedicated + [free
181
-workers](#free-workers)), and queued (0 or 1, since we only acquire when
182
-needed). See [provide queue](#provide-queue) and [reprovide
183
-queue](#reprovide-queue) for regions waiting to be processed.
181
+Breakdown of worker status by type (periodic for scheduled reprovides, burst for
182
+initial provides). For each type:
183
+
184
+- **Active**: Currently processing operations
185
+- **Dedicated**: Reserved for this type
186
+- **Available**: Idle dedicated workers + [free workers](#free-workers)
187
+- **Queued**: 0 or 1 (workers acquired only when needed)
188
+
189
+See [provide queue](#provide-queue) and [reprovide queue](#reprovide-queue) for
190
+regions waiting to be processed.
191
192
### Max connections/worker
193
194
Maximum concurrent DHT server connections per worker when sending provider
195
records for a region.
196
+
197
+## See Also
198
+
199
+- [Provide configuration reference](./config.md#provide)
200
+- [Provide metrics for Prometheus](./metrics.md#provide)
go.mod
+3
-3
@@ -51,7 +51,7 @@ require (
51
github.com/jbenet/go-temp-err-catcher v0.1.0
52
github.com/julienschmidt/httprouter v1.3.0
53
github.com/libp2p/go-doh-resolver v0.5.0
54
- github.com/libp2p/go-libp2p v0.43.0
54
+ github.com/libp2p/go-libp2p v0.44.0
55
github.com/libp2p/go-libp2p-http v0.5.0
56
github.com/libp2p/go-libp2p-kad-dht v0.35.2-0.20251017193437-abd04263daac
57
github.com/libp2p/go-libp2p-kbucket v0.8.0
@@ -170,7 +170,7 @@ require (
170
github.com/libp2p/go-libp2p-gostream v0.6.0 // indirect
171
github.com/libp2p/go-libp2p-xor v0.1.0 // indirect
172
github.com/libp2p/go-msgio v0.3.0 // indirect
173
- github.com/libp2p/go-netroute v0.2.2 // indirect
173
+ github.com/libp2p/go-netroute v0.3.0 // indirect
174
github.com/libp2p/go-reuseport v0.4.0 // indirect
175
github.com/libp2p/go-yamux/v5 v5.0.1 // indirect
176
github.com/libp2p/zeroconf/v2 v2.2.0 // indirect
@@ -221,7 +221,7 @@ require (
221
github.com/prometheus/procfs v0.17.0 // indirect
222
github.com/prometheus/statsd_exporter v0.27.1 // indirect
223
github.com/quic-go/qpack v0.5.1 // indirect
224
- github.com/quic-go/quic-go v0.54.1 // indirect
224
+ github.com/quic-go/quic-go v0.55.0 // indirect
225
github.com/quic-go/webtransport-go v0.9.0 // indirect
226
github.com/rivo/uniseg v0.4.4 // indirect
227
github.com/rogpeppe/go-internal v1.14.1 // indirect
go.sum
+8
-6
@@ -508,8 +508,8 @@ github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZ
508
github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs=
509
github.com/libp2p/go-flow-metrics v0.3.0 h1:q31zcHUvHnwDO0SHaukewPYgwOBSxtt830uJtUx6784=
510
github.com/libp2p/go-flow-metrics v0.3.0/go.mod h1:nuhlreIwEguM1IvHAew3ij7A8BMlyHQJ279ao24eZZo=
511
-github.com/libp2p/go-libp2p v0.43.0 h1:b2bg2cRNmY4HpLK8VHYQXLX2d3iND95OjodLFymvqXU=
512
-github.com/libp2p/go-libp2p v0.43.0/go.mod h1:IiSqAXDyP2sWH+J2gs43pNmB/y4FOi2XQPbsb+8qvzc=
511
+github.com/libp2p/go-libp2p v0.44.0 h1:5Gtt8OrF8yiXmH+Mx4+/iBeFRMK1TY3a8OrEBDEqAvs=
512
+github.com/libp2p/go-libp2p v0.44.0/go.mod h1:NovCojezAt4dnDd4fH048K7PKEqH0UFYYqJRjIIu8zc=
513
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
514
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
515
github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g=
@@ -539,8 +539,8 @@ github.com/libp2p/go-libp2p-xor v0.1.0/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQ
539
github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
540
github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
541
github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM=
542
-github.com/libp2p/go-netroute v0.2.2 h1:Dejd8cQ47Qx2kRABg6lPwknU7+nBnFRpko45/fFPuZ8=
543
-github.com/libp2p/go-netroute v0.2.2/go.mod h1:Rntq6jUAH0l9Gg17w5bFGhcC9a+vk4KNXs6s7IljKYE=
542
+github.com/libp2p/go-netroute v0.3.0 h1:nqPCXHmeNmgTJnktosJ/sIef9hvwYCrsLxXmfNks/oc=
543
+github.com/libp2p/go-netroute v0.3.0/go.mod h1:Nkd5ShYgSMS5MUKy/MU2T57xFoOKvvLR92Lic48LEyA=
544
github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
545
github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
546
github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s=
@@ -555,6 +555,8 @@ github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm
555
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
556
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
557
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
558
+github.com/marcopolo/simnet v0.0.1 h1:rSMslhPz6q9IvJeFWDoMGxMIrlsbXau3NkuIXHGJxfg=
559
+github.com/marcopolo/simnet v0.0.1/go.mod h1:WDaQkgLAjqDUEBAOXz22+1j6wXKfGlC5sD5XWt3ddOs=
560
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk=
561
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU=
562
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -775,8 +777,8 @@ github.com/prometheus/statsd_exporter v0.27.1 h1:tcRJOmwlA83HPfWzosAgr2+zEN5XDFv
777
github.com/prometheus/statsd_exporter v0.27.1/go.mod h1:vA6ryDfsN7py/3JApEst6nLTJboq66XsNcJGNmC88NQ=
778
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
779
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
778
-github.com/quic-go/quic-go v0.54.1 h1:4ZAWm0AhCb6+hE+l5Q1NAL0iRn/ZrMwqHRGQiFwj2eg=
779
-github.com/quic-go/quic-go v0.54.1/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
780
+github.com/quic-go/quic-go v0.55.0 h1:zccPQIqYCXDt5NmcEabyYvOnomjs8Tlwl7tISjJh9Mk=
781
+github.com/quic-go/quic-go v0.55.0/go.mod h1:DR51ilwU1uE164KuWXhinFcKWGlEjzys2l8zUl5Ss1U=
782
github.com/quic-go/webtransport-go v0.9.0 h1:jgys+7/wm6JarGDrW+lD/r9BGqBAmqY/ssklE09bA70=
783
github.com/quic-go/webtransport-go v0.9.0/go.mod h1:4FUYIiUc75XSsF6HShcLeXXYZJ9AGwo/xh3L8M/P1ao=
784
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
test/dependencies/go.mod
+3
-6
@@ -182,14 +182,14 @@ require (
182
github.com/libp2p/go-cidranger v1.1.0 // indirect
183
github.com/libp2p/go-doh-resolver v0.5.0 // indirect
184
github.com/libp2p/go-flow-metrics v0.3.0 // indirect
185
- github.com/libp2p/go-libp2p v0.43.0 // indirect
185
+ github.com/libp2p/go-libp2p v0.44.0 // indirect
186
github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
187
github.com/libp2p/go-libp2p-kad-dht v0.35.2-0.20251017193437-abd04263daac // indirect
188
github.com/libp2p/go-libp2p-kbucket v0.8.0 // indirect
189
github.com/libp2p/go-libp2p-record v0.3.1 // indirect
190
github.com/libp2p/go-libp2p-routing-helpers v0.7.5 // indirect
191
github.com/libp2p/go-msgio v0.3.0 // indirect
192
- github.com/libp2p/go-netroute v0.2.2 // indirect
192
+ github.com/libp2p/go-netroute v0.3.0 // indirect
193
github.com/libp2p/go-reuseport v0.4.0 // indirect
194
github.com/macabu/inamedparam v0.1.3 // indirect
195
github.com/magiconair/properties v1.8.7 // indirect
@@ -258,9 +258,7 @@ require (
258
github.com/quasilyte/gogrep v0.5.0 // indirect
259
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
260
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
261
- github.com/quic-go/qpack v0.5.1 // indirect
262
- github.com/quic-go/quic-go v0.54.1 // indirect
263
- github.com/quic-go/webtransport-go v0.9.0 // indirect
261
+ github.com/quic-go/quic-go v0.55.0 // indirect
262
github.com/raeperd/recvcheck v0.2.0 // indirect
263
github.com/rivo/uniseg v0.4.7 // indirect
264
github.com/rogpeppe/go-internal v1.14.1 // indirect
@@ -325,7 +323,6 @@ require (
323
go.uber.org/automaxprocs v1.6.0 // indirect
324
go.uber.org/dig v1.19.0 // indirect
325
go.uber.org/fx v1.24.0 // indirect
328
- go.uber.org/mock v0.5.2 // indirect
326
go.uber.org/multierr v1.11.0 // indirect
327
go.uber.org/zap v1.27.0 // indirect
328
go.uber.org/zap/exp v0.3.0 // indirect
test/dependencies/go.sum
+8
-6
@@ -464,8 +464,8 @@ github.com/libp2p/go-doh-resolver v0.5.0 h1:4h7plVVW+XTS+oUBw2+8KfoM1jF6w8XmO7+s
464
github.com/libp2p/go-doh-resolver v0.5.0/go.mod h1:aPDxfiD2hNURgd13+hfo29z9IC22fv30ee5iM31RzxU=
465
github.com/libp2p/go-flow-metrics v0.3.0 h1:q31zcHUvHnwDO0SHaukewPYgwOBSxtt830uJtUx6784=
466
github.com/libp2p/go-flow-metrics v0.3.0/go.mod h1:nuhlreIwEguM1IvHAew3ij7A8BMlyHQJ279ao24eZZo=
467
-github.com/libp2p/go-libp2p v0.43.0 h1:b2bg2cRNmY4HpLK8VHYQXLX2d3iND95OjodLFymvqXU=
468
-github.com/libp2p/go-libp2p v0.43.0/go.mod h1:IiSqAXDyP2sWH+J2gs43pNmB/y4FOi2XQPbsb+8qvzc=
467
+github.com/libp2p/go-libp2p v0.44.0 h1:5Gtt8OrF8yiXmH+Mx4+/iBeFRMK1TY3a8OrEBDEqAvs=
468
+github.com/libp2p/go-libp2p v0.44.0/go.mod h1:NovCojezAt4dnDd4fH048K7PKEqH0UFYYqJRjIIu8zc=
469
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
470
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
471
github.com/libp2p/go-libp2p-kad-dht v0.35.2-0.20251017193437-abd04263daac h1:2TWHkp8MJBLfwIRMUfvjFb2DABcjLaYAwVBzAEirkhU=
@@ -480,8 +480,8 @@ github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUI
480
github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg=
481
github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0=
482
github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM=
483
-github.com/libp2p/go-netroute v0.2.2 h1:Dejd8cQ47Qx2kRABg6lPwknU7+nBnFRpko45/fFPuZ8=
484
-github.com/libp2p/go-netroute v0.2.2/go.mod h1:Rntq6jUAH0l9Gg17w5bFGhcC9a+vk4KNXs6s7IljKYE=
483
+github.com/libp2p/go-netroute v0.3.0 h1:nqPCXHmeNmgTJnktosJ/sIef9hvwYCrsLxXmfNks/oc=
484
+github.com/libp2p/go-netroute v0.3.0/go.mod h1:Nkd5ShYgSMS5MUKy/MU2T57xFoOKvvLR92Lic48LEyA=
485
github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s=
486
github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU=
487
github.com/libp2p/go-yamux/v5 v5.0.1 h1:f0WoX/bEF2E8SbE4c/k1Mo+/9z0O4oC/hWEA+nfYRSg=
@@ -496,6 +496,8 @@ github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s
496
github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=
497
github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04=
498
github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc=
499
+github.com/marcopolo/simnet v0.0.1 h1:rSMslhPz6q9IvJeFWDoMGxMIrlsbXau3NkuIXHGJxfg=
500
+github.com/marcopolo/simnet v0.0.1/go.mod h1:WDaQkgLAjqDUEBAOXz22+1j6wXKfGlC5sD5XWt3ddOs=
501
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk=
502
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU=
503
github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4=
@@ -678,8 +680,8 @@ github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4l
680
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=
681
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
682
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
681
-github.com/quic-go/quic-go v0.54.1 h1:4ZAWm0AhCb6+hE+l5Q1NAL0iRn/ZrMwqHRGQiFwj2eg=
682
-github.com/quic-go/quic-go v0.54.1/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
683
+github.com/quic-go/quic-go v0.55.0 h1:zccPQIqYCXDt5NmcEabyYvOnomjs8Tlwl7tISjJh9Mk=
684
+github.com/quic-go/quic-go v0.55.0/go.mod h1:DR51ilwU1uE164KuWXhinFcKWGlEjzys2l8zUl5Ss1U=
685
github.com/quic-go/webtransport-go v0.9.0 h1:jgys+7/wm6JarGDrW+lD/r9BGqBAmqY/ssklE09bA70=
686
github.com/quic-go/webtransport-go v0.9.0/go.mod h1:4FUYIiUc75XSsF6HShcLeXXYZJ9AGwo/xh3L8M/P1ao=
687
github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI=