@cryptotaxi247 / kubo / commits / ae78c7821

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=