From 64066c594800ff020ac0ede4de0ef7c3c6a7ca96 Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Wed, 23 May 2018 00:32:47 +0800 Subject: [PATCH] update code --- dns_client.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/dns_client.c b/dns_client.c index 446f209..5e368ef 100644 --- a/dns_client.c +++ b/dns_client.c @@ -396,6 +396,14 @@ static int _dns_client_process_answer(char *domain, struct dns_packet *packet) return -1; } + pthread_mutex_lock(&client.server_list_lock); + query->dns_request_sent--; + if (query->dns_request_sent < 0) { + pthread_mutex_unlock(&client.server_list_lock); + return -1; + } + pthread_mutex_unlock(&client.server_list_lock); + for (j = 1; j < DNS_RRS_END; j++) { rrs = dns_get_rrs_start(packet, j, &rr_count); for (i = 0; i < rr_count && rrs; i++, rrs = dns_get_rrs_next(packet, rrs)) { @@ -441,8 +449,7 @@ static int _dns_client_process_answer(char *domain, struct dns_packet *packet) } pthread_mutex_lock(&client.server_list_lock); - query->dns_request_sent--; - if (query->dns_request_sent < 0) { + if (query->dns_request_sent <= 0) { _dns_client_query_release(query); } pthread_mutex_unlock(&client.server_list_lock); @@ -583,6 +590,7 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet, switch (server_info->type) { case DNS_SERVER_UDP: ret = _dns_client_send_udp(server_info, packet, len); + break; default: ret = -1; break;