From b178f26e526c5f7575bc6a4a644454004e4e7134 Mon Sep 17 00:00:00 2001 From: Yihong Wu <54519668+domosekai@users.noreply.github.com> Date: Sat, 4 Dec 2021 16:16:22 +0800 Subject: [PATCH] Reduce redundant loop Co-authored-by: Davide Beatrici --- src/Mayaqua/DNS.c | 12 ++++++++++-- src/Mayaqua/Network.c | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Mayaqua/DNS.c b/src/Mayaqua/DNS.c index 74581d6b..ab02ba19 100644 --- a/src/Mayaqua/DNS.c +++ b/src/Mayaqua/DNS.c @@ -413,7 +413,6 @@ void DnsResolver(THREAD *t, void *param) else { hints.ai_family = AF_INET; - hints.ai_flags = AI_ADDRCONFIG; } struct addrinfo *results; @@ -434,21 +433,30 @@ void DnsResolver(THREAD *t, void *param) Copy(&resolver->IPv6, &ip, sizeof(resolver->IPv6)); resolver->IPv6.ipv6_scope_id = in->sin6_scope_id; ipv6_ok = true; + if (ipv4_ok) + { + break; + } } else if (IsIP4(&ip) && ipv4_ok == false) { Copy(&resolver->IPv4, &ip, sizeof(resolver->IPv4)); ipv4_ok = true; + if (ipv6_ok) + { + break; + } } } else { const struct sockaddr_in *in = (struct sockaddr_in *)result->ai_addr; InAddrToIP(&ip, &in->sin_addr); - if (IsIP4(&ip) && ipv4_ok == false) + if (IsIP4(&ip)) { Copy(&resolver->IPv4, &ip, sizeof(resolver->IPv4)); ipv4_ok = true; + break; } } } diff --git a/src/Mayaqua/Network.c b/src/Mayaqua/Network.c index e8b81af1..5bbda204 100644 --- a/src/Mayaqua/Network.c +++ b/src/Mayaqua/Network.c @@ -9892,7 +9892,9 @@ bool HasIPv6Address() if ((type & IPV6_ADDR_GLOBAL_UNICAST) && ((type & IPV6_ADDR_ZERO) == 0) && ((type & IPV6_ADDR_LOOPBACK) == 0)) { ret = true; + break; } + } }