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; }