From 494159418221b5be628f8b68fe92301f7e55a383 Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Sat, 11 Feb 2023 15:15:06 +0800 Subject: [PATCH] dns_client: bootstrap dns: fail when domain not found. --- src/dns_client.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/dns_client.c b/src/dns_client.c index d92afe7..177ab5b 100644 --- a/src/dns_client.c +++ b/src/dns_client.c @@ -152,6 +152,8 @@ struct dns_server_pending { unsigned int has_v6; unsigned int query_v4; unsigned int query_v6; + unsigned int has_soa; + /* server type */ dns_server_type_t type; int retry_cnt; @@ -3614,6 +3616,10 @@ static int _dns_client_pending_server_resolve(const char *domain, dns_rtcode_t r struct dns_server_pending *pending = user_ptr; int ret = 0; + if (rtcode == DNS_RC_NXDOMAIN) { + pending->has_soa = 1; + } + if (addr_type == DNS_T_A) { pending->ping_time_v4 = -1; if (rtcode == DNS_RC_NOERROR) { @@ -3748,6 +3754,12 @@ static void _dns_client_add_pending_servers(void) dnsserver_ip = pending->ipv6; } + if (pending->has_soa) { + tlog(TLOG_WARN, "add pending DNS server %s failed, no such host.", pending->host); + _dns_client_server_pending_remove(pending); + continue; + } + if (dnsserver_ip && dnsserver_ip[0]) { if (_dns_client_add_pendings(pending, dnsserver_ip) == 0) { add_success = 1;