2
0
Эх сурвалжийг харах

dns_server: fix request group issue

Nick Peng 1 жил өмнө
parent
commit
22349761ec
1 өөрчлөгдсөн 24 нэмэгдсэн , 15 устгасан
  1. 24 15
      src/dns_server.c

+ 24 - 15
src/dns_server.c

@@ -6684,6 +6684,7 @@ static void _dns_server_mdns_query_setup_server_group(struct dns_request *reques
 	}
 
 	*group_name = DNS_SERVER_GROUP_MDNS;
+	safe_strncpy(request->dns_group_name, DNS_SERVER_GROUP_MDNS, sizeof(request->dns_group_name));
 	return;
 }
 
@@ -6825,19 +6826,36 @@ static int _dns_server_setup_request_conf(struct dns_request *request)
 	return 0;
 }
 
+static void _dns_server_setup_dns_group_name(struct dns_request *request, const char **server_group_name)
+{
+	const char *group_name = NULL;
+	const char *temp_group_name = NULL;
+	if (request->conn) {
+		group_name = request->conn->dns_group;
+	}
+
+	temp_group_name = _dns_server_get_request_server_groupname(request);
+	if (temp_group_name != NULL) {
+		group_name = temp_group_name;
+	}
+
+	if (request->dns_group_name[0] != '\0') {
+		group_name = request->dns_group_name;
+	} else {
+		safe_strncpy(request->dns_group_name, group_name, sizeof(request->dns_group_name));
+	}
+
+	*server_group_name = group_name;
+}
+
 static int _dns_server_do_query(struct dns_request *request, int skip_notify_event)
 {
 	int ret = -1;
 	const char *server_group_name = NULL;
-	const char *dns_group = NULL;
 	struct dns_query_options options;
 	char *request_domain = request->domain;
 	char domain_buffer[DNS_MAX_CNAME_LEN * 2];
 
-	if (request->conn) {
-		dns_group = request->conn->dns_group;
-	}
-
 	request->send_tick = get_tick_count();
 
 	if (_dns_server_setup_request_conf_pre(request) != 0) {
@@ -6847,16 +6865,7 @@ static int _dns_server_do_query(struct dns_request *request, int skip_notify_eve
 	/* lookup domain rule */
 	_dns_server_get_domain_rule(request);
 
-	if (request->dns_group_name[0] == '\0') {
-		if (dns_group) {
-			safe_strncpy(request->dns_group_name, dns_group, sizeof(request->dns_group_name));
-		}
-	}
-
-	server_group_name = _dns_server_get_request_server_groupname(request);
-	if (server_group_name == NULL) {
-		server_group_name = request->dns_group_name;
-	}
+	_dns_server_setup_dns_group_name(request, &server_group_name);
 
 	if (_dns_server_setup_request_conf(request) != 0) {
 		goto errout;