diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-21 20:18:51 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-21 20:18:51 +0200 |
commit | 158d6f52ec38c823e5cb2b3e82a50add45f301df (patch) | |
tree | c2640cad19fe1e49f4cc8c08e2afca88e2a8ac2e /server/registry | |
parent | 8ee909336ce84f6f0a2ad5dd997ae44f96dd4d03 (diff) | |
download | hurrycurry-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.rs | 9 |
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 { |