summaryrefslogtreecommitdiff
path: root/server/registry
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-21 20:18:51 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-21 20:18:51 +0200
commit158d6f52ec38c823e5cb2b3e82a50add45f301df (patch)
treec2640cad19fe1e49f4cc8c08e2afca88e2a8ac2e /server/registry
parent8ee909336ce84f6f0a2ad5dd997ae44f96dd4d03 (diff)
downloadhurrycurry-158d6f52ec38c823e5cb2b3e82a50add45f301df.tar
hurrycurry-158d6f52ec38c823e5cb2b3e82a50add45f301df.tar.bz2
hurrycurry-158d6f52ec38c823e5cb2b3e82a50add45f301df.tar.zst
reg: fix ipv6 mapped address probems
Diffstat (limited to 'server/registry')
-rw-r--r--server/registry/src/register.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/server/registry/src/register.rs b/server/registry/src/register.rs
index 603f5a4a..1e90fc68 100644
--- a/server/registry/src/register.rs
+++ b/server/registry/src/register.rs
@@ -51,7 +51,8 @@ async fn register_inner(
registry: &Arc<RwLock<Registry>>,
submission: &Submission,
) -> Result<(), &'static str> {
- debug!("submission {submission:?}");
+ debug!("submission {submission:?} from {client_addr}");
+ let client_addr = client_addr.to_canonical();
let uri = Uri::from_str(&submission.uri).map_err(|_| "invalid uri")?;
let scheme = uri.scheme().ok_or("no scheme")?.as_str();
@@ -74,6 +75,8 @@ async fn register_inner(
if addr.is_multicast() {
return Err("multicast address");
}
+ info!("{client_addr} != {addr}");
+ let addr = addr.to_canonical();
if client_addr == addr {
let saddr = SocketAddr::new(addr, port);
(saddr, format!("{scheme}://{saddr}"))
@@ -85,10 +88,10 @@ async fn register_inner(
if let Some(addr) = lookup_host(format!("{host}:0"))
.await
.map_err(|_| "dns lookup failed")?
- .find(|a| a.ip() == client_addr)
+ .find(|a| a.ip().to_canonical() == client_addr)
{
(
- SocketAddr::new(addr.ip(), port),
+ SocketAddr::new(addr.ip().to_canonical(), port),
format!("{scheme}://{host}:{port}"),
)
} else {