From 30c334d887ec4b3c028a15ec5f364b0f0e1e35bc Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Thu, 24 Dec 2020 23:40:11 +0300 Subject: [PATCH] Resolve MX domain only once per OAuth2 provider Currently we have only one provider in the list, so there is no difference, but more providers (e.g. Yandex.Connect) may be added later. --- src/oauth2.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/oauth2.rs b/src/oauth2.rs index dfb19f7c9..eab0da849 100644 --- a/src/oauth2.rs +++ b/src/oauth2.rs @@ -297,16 +297,16 @@ impl Oauth2 { ) .await { - for provider in OAUTH2_PROVIDERS.iter() { - if let Some(pattern) = provider.mx_pattern { - let re = Regex::new(pattern).unwrap(); + let mut fqdn: String = String::from(domain.as_ref()); + if !fqdn.ends_with('.') { + fqdn.push('.'); + } - let mut fqdn: String = String::from(domain.as_ref()); - if !fqdn.ends_with('.') { - fqdn.push('.'); - } + if let Ok(res) = resolver.mx_lookup(fqdn).await { + for provider in OAUTH2_PROVIDERS.iter() { + if let Some(pattern) = provider.mx_pattern { + let re = Regex::new(pattern).unwrap(); - if let Ok(res) = resolver.mx_lookup(fqdn).await { for rr in res.iter() { if re.is_match(&rr.exchange().to_lowercase().to_utf8()) { return Some(provider.clone());