From: Jukka Rissanen Date: Mon, 17 Sep 2012 13:43:53 +0000 (+0300) Subject: resolver: Do not touch IPv4 servers in redo case X-Git-Tag: 1.8~74 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5c0e208ba24937a7e3dd1bb363cd790a53f7d329;p=platform%2Fupstream%2Fconnman.git resolver: Do not touch IPv4 servers in redo case The name server refresh should be only done for IPv6 nameservers. --- 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.