Browse Source

Fix prefetch issue

Nick Peng 6 years ago
parent
commit
cddc511e6b
3 changed files with 7 additions and 7 deletions
  1. 2 2
      src/dns_cache.c
  2. 3 3
      src/dns_cache.h
  3. 2 2
      src/dns_server.c

+ 2 - 2
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;

+ 3 - 3
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);
 

+ 2 - 2
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);