From bb2fd4ce56ee516d61be2af90c9d299fa6a06c7a Mon Sep 17 00:00:00 2001 From: Daniel N <2color@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:11:31 +0100 Subject: [PATCH 1/5] fix: only return public ips in fallback iter --- server_cached_router.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server_cached_router.go b/server_cached_router.go index c66c6aa..b43b5a8 100644 --- a/server_cached_router.go +++ b/server_cached_router.go @@ -223,6 +223,7 @@ func (it *cacheFallbackIter) dispatchFindPeer(record types.PeerRecord) { } if len(peers) > 0 { // If we found the peer, pass back the result + peers[0].Addrs = filterPrivateMultiaddr(peers[0].Addrs) // filter out private addresses it.findPeersResult <- *peers[0] } else { it.findPeersResult <- record // pass back the record with no addrs From a82314361a83fbfa50c388ceffef65e28a9b6e38 Mon Sep 17 00:00:00 2001 From: Daniel N <2color@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:12:19 +0100 Subject: [PATCH 2/5] fix: sanitize last to ensure we only return public ips --- server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 4052c81..65b46ee 100644 --- a/server.go +++ b/server.go @@ -246,7 +246,8 @@ func getCombinedRouting(endpoints []string, dht routing.Routing, cachedAddrBook var dhtRouter router if cachedAddrBook != nil { - dhtRouter = NewCachedRouter(sanitizeRouter{libp2pRouter{routing: dht}}, cachedAddrBook) + cachedRouter := NewCachedRouter(libp2pRouter{routing: dht}, cachedAddrBook) + dhtRouter = sanitizeRouter{cachedRouter} } else { dhtRouter = sanitizeRouter{libp2pRouter{routing: dht}} } From 3bc3c0fc597084f87703b2d1eeaf3f05a00b4c35 Mon Sep 17 00:00:00 2001 From: Daniel N <2color@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:14:36 +0100 Subject: [PATCH 3/5] docs: add coment about cached router --- server_cached_router.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server_cached_router.go b/server_cached_router.go index b43b5a8..5480a28 100644 --- a/server_cached_router.go +++ b/server_cached_router.go @@ -48,6 +48,7 @@ const ( ) // cachedRouter wraps a router with the cachedAddrBook to retrieve cached addresses for peers without multiaddrs in FindProviders +// it will also dispatch a FindPeer when a provider has no multiaddrs using the cacheFallbackIter type cachedRouter struct { router cachedAddrBook *cachedAddrBook From 2bed205bed014733a44d0a2f142c1d4d43525433 Mon Sep 17 00:00:00 2001 From: Daniel N <2color@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:40:00 +0100 Subject: [PATCH 4/5] Revert "fix: only return public ips in fallback iter" This reverts commit bb2fd4ce56ee516d61be2af90c9d299fa6a06c7a. --- server_cached_router.go | 1 - 1 file changed, 1 deletion(-) diff --git a/server_cached_router.go b/server_cached_router.go index 5480a28..ae93588 100644 --- a/server_cached_router.go +++ b/server_cached_router.go @@ -224,7 +224,6 @@ func (it *cacheFallbackIter) dispatchFindPeer(record types.PeerRecord) { } if len(peers) > 0 { // If we found the peer, pass back the result - peers[0].Addrs = filterPrivateMultiaddr(peers[0].Addrs) // filter out private addresses it.findPeersResult <- *peers[0] } else { it.findPeersResult <- record // pass back the record with no addrs From c3e1f34b4bca924a3c1e20d824f154b44670daed Mon Sep 17 00:00:00 2001 From: Daniel N <2color@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:42:31 +0100 Subject: [PATCH 5/5] docs: update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02096de..f316e4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,13 +15,14 @@ The following emojis are used to highlight certain changes: ### Added - ### Changed ### Removed ### Fixed +- Fix a bug whereby, cached peers with private multiaddrs were returned in `/routing/v1/providers` responses, as they were not passing through `sanitizeRouter`. + ### Security ## [v0.7.0]