aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/resolver.rs
diff options
context:
space:
mode:
authorLuna <90072930+LunaWasFlaggedAgain@users.noreply.github.com>2023-03-11 19:11:35 -0300
committerGitHub <noreply@github.com>2023-03-11 16:11:35 -0600
commit81e7adb409199ac6594a18ca1bd88bfe89fbfc3e (patch)
treef092f6f605065f7803e9467ca564940a31af331c /azalea-protocol/src/resolver.rs
parentc57c68ddf8cb9e4e8d27cf3e08f267a8a020c1c0 (diff)
downloadazalea-drasl-81e7adb409199ac6594a18ca1bd88bfe89fbfc3e.tar.xz
Fix infinite recursion in the DNS resolver (#82)
Diffstat (limited to 'azalea-protocol/src/resolver.rs')
-rwxr-xr-xazalea-protocol/src/resolver.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/azalea-protocol/src/resolver.rs b/azalea-protocol/src/resolver.rs
index d12654f2..f99cec05 100755
--- a/azalea-protocol/src/resolver.rs
+++ b/azalea-protocol/src/resolver.rs
@@ -50,6 +50,15 @@ pub async fn resolve_address(address: &ServerAddress) -> Result<SocketAddr, Reso
port: redirect_srv.port(),
};
+ if redirect_address.host == address.host {
+ let lookup_ip_result = resolver.lookup_ip(redirect_address.host).await;
+ let lookup_ip = lookup_ip_result.map_err(|_| ResolverError::NoIp)?;
+ return Ok(SocketAddr::new(
+ lookup_ip.iter().next().unwrap(),
+ redirect_address.port,
+ ))
+ }
+
// debug!("redirecting to {:?}", redirect_address);
return resolve_address(&redirect_address).await;