Просмотр исходного кода

dns_client: avoid false re-creation of udp sockets causing retries.

Nick Peng 2 лет назад
Родитель
Сommit
89e958abfa
2 измененных файлов с 12 добавлено и 2 удалено
  1. 6 1
      src/dns_client.c
  2. 6 1
      src/smartdns.c

+ 6 - 1
src/dns_client.c

@@ -4131,7 +4131,12 @@ static void _dns_client_period_run(unsigned int msec)
 	{
 		/* free timed out query, and notify caller */
 		list_del_init(&query->period_list);
-		_dns_client_check_udp_nat(query);
+
+		/* check udp nat after retrying. */
+		if (atomic_read(&query->retry_count) == 1) {
+			_dns_client_check_udp_nat(query);
+		}
+
 		if (atomic_dec_and_test(&query->retry_count) || (query->has_result != 0)) {
 			_dns_client_query_remove(query);
 			if (query->has_result == 0) {

+ 6 - 1
src/smartdns.c

@@ -460,8 +460,13 @@ static int _smartdns_init(void)
 	const char *logfile = _smartdns_log_path();
 	int i = 0;
 	char logdir[PATH_MAX] = {0};
+	int logbuffersize = 0;
 
-	ret = tlog_init(logfile, dns_conf_log_size, dns_conf_log_num, 0, 0);
+	if (get_system_mem_size() > 1024 * 1024 * 1024) {
+		logbuffersize = 1024 * 1024;
+	}
+
+	ret = tlog_init(logfile, dns_conf_log_size, dns_conf_log_num, logbuffersize, TLOG_NONBLOCK);
 	if (ret != 0) {
 		tlog(TLOG_ERROR, "start tlog failed.\n");
 		goto errout;