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 2d52457..009110f 100644
--- a/src/resolver.c
+++ b/src/resolver.c
@@ -31,6 +31,7 @@
 #include <string.h>
 #include <sys/stat.h>
 #include <resolv.h>
+#include <netdb.h>
 
 #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;
@@ -539,6 +545,13 @@ int __connman_resolver_redo_servers(const char *interface)
                        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.
                 */
-- 
1.7.11.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to