From cddc511e6b1f219af3c4d7def42f8354b3cd863a Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Sun, 10 Mar 2019 00:34:15 +0800 Subject: [PATCH] Fix prefetch issue --- src/dns_cache.c | 4 ++-- src/dns_cache.h | 6 +++--- src/dns_server.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dns_cache.c b/src/dns_cache.c index 08b6506..5031234 100644 --- a/src/dns_cache.c +++ b/src/dns_cache.c @@ -66,7 +66,7 @@ static void _dns_cache_remove(struct dns_cache *dns_cache) dns_cache_release(dns_cache); } -int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, unsigned int speed) +int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed) { struct dns_cache *dns_cache = NULL; @@ -122,7 +122,7 @@ errout: return -1; } -int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, unsigned int speed) +int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed) { uint32_t key = 0; struct dns_cache *dns_cache = NULL; diff --git a/src/dns_cache.h b/src/dns_cache.h index efbbf4b..8bf1bfd 100644 --- a/src/dns_cache.h +++ b/src/dns_cache.h @@ -20,7 +20,7 @@ struct dns_cache { char cname[DNS_MAX_CNAME_LEN]; unsigned int cname_ttl; unsigned int ttl;; - unsigned int speed; + int speed; int hitnum; int del_pending; time_t insert_time; @@ -34,9 +34,9 @@ struct dns_cache { int dns_cache_init(int size); -int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, unsigned int speed); +int dns_cache_replace(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed); -int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, unsigned int speed); +int dns_cache_insert(char *domain, char *cname, int cname_ttl, int ttl, dns_type_t qtype, unsigned char *addr, int addr_len, int speed); struct dns_cache *dns_cache_lookup(char *domain, dns_type_t qtype); diff --git a/src/dns_server.c b/src/dns_server.c index 42c1cc6..15d063a 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -583,7 +583,7 @@ static int _dns_server_request_complete(struct dns_request *request) request->has_soa = 0; } - if (request->has_ipv4 && request->ping_ttl_v4 > 0) { + if (request->has_ipv4 && (request->ping_ttl_v4 > 0)) { tlog(TLOG_INFO, "result: %s, rcode: %d, %d.%d.%d.%d\n", request->domain, request->rcode, request->ipv4_addr[0], request->ipv4_addr[1], request->ipv4_addr[2], request->ipv4_addr[3]); @@ -1479,7 +1479,7 @@ static int _dns_server_process_cache(struct dns_request *request, struct dns_pac if (dns_conf_dualstack_ip_selection && request->qtype == DNS_T_AAAA) { struct dns_cache *dns_cache_A = dns_cache_lookup(request->domain, DNS_T_A); - if (dns_cache_A) { + if (dns_cache_A && (dns_cache_A->speed > 0)) { if ((dns_cache_A->speed + (dns_conf_dualstack_ip_selection_threshold * 10)) < dns_cache->speed || dns_cache->speed < 0) { tlog(TLOG_DEBUG, "Force IPV4 perfered."); return _dns_server_reply_SOA(DNS_RC_NOERROR, request, NULL);