From 2ca4c92c9f4f6bbe5279e498fe238ea3f70f8902 Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Wed, 22 Feb 2023 21:55:07 +0800 Subject: [PATCH] dns-client: allow same upstream server with different proxy. --- src/dns_client.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dns_client.c b/src/dns_client.c index a12fb22..75d18b8 100644 --- a/src/dns_client.c +++ b/src/dns_client.c @@ -447,7 +447,7 @@ errout: } /* check whether server exists */ -static int _dns_client_server_exist(const char *server_ip, int port, dns_server_type_t server_type) +static int _dns_client_server_exist(const char *server_ip, int port, dns_server_type_t server_type, struct client_dns_server_flags *flags) { struct dns_server_info *server_info = NULL; struct dns_server_info *tmp = NULL; @@ -458,6 +458,10 @@ static int _dns_client_server_exist(const char *server_ip, int port, dns_server_ continue; } + if (memcmp(&server_info->flags, flags, sizeof(*flags)) == 0) { + continue; + } + if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN) != 0) { continue; } @@ -1029,7 +1033,7 @@ static int _dns_client_server_add(char *server_ip, char *server_host, int port, } /* if server exist, return */ - if (_dns_client_server_exist(server_ip, port, server_type) == 0) { + if (_dns_client_server_exist(server_ip, port, server_type, flags) == 0) { return 0; }