From 5c0e208ba24937a7e3dd1bb363cd790a53f7d329 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Mon, 17 Sep 2012 16:43:53 +0300 Subject: [PATCH] resolver: Do not touch IPv4 servers in redo case The name server refresh should be only done for IPv6 nameservers. --- src/resolver.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/resolver.c b/src/resolver.c index 2d524573..009110f9 100644 --- a/src/resolver.c +++ b/src/resolver.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "connman.h" @@ -46,6 +47,7 @@ struct entry_data { char *interface; char *domain; char *server; + int family; unsigned int flags; unsigned int lifetime; guint timeout; @@ -317,6 +319,10 @@ static int append_resolver(const char *interface, const char *domain, entry->server = g_strdup(server); entry->flags = flags; entry->lifetime = lifetime; + + if (server != NULL) + entry->family = connman_inet_check_ipaddress(server); + if (lifetime) { int index; interval = lifetime * RESOLVER_LIFETIME_REFRESH_THRESHOLD; @@ -538,6 +544,13 @@ int __connman_resolver_redo_servers(const char *interface) g_strcmp0(entry->interface, interface) != 0) continue; + /* + * This function must only check IPv6 server addresses so + * do not remove IPv4 name servers unnecessarily. + */ + if (entry->family != AF_INET6) + continue; + /* * We remove the server, and then re-create so that it will * use proper source addresses when sending DNS queries. -- 2.34.1