chiark / gitweb /
resolved: read the system /etc/resolv.conf unless we wrote it ourselves
[elogind.git] / src / resolve / resolved-conf.c
index 0def80e3a578d84276348192d3924e64f2715ff1..ae3773f4f7cd7d3d4f8e5bfceaacd43d0ff89219 100644 (file)
@@ -94,20 +94,27 @@ int config_parse_dnsv(
         else
                 l = &m->dns_servers;
 
-        /* Empty assignment means clear the list */
         if (isempty(rvalue)) {
+
+                /* Empty assignment means clear the list */
                 while (*l)
                         dns_server_free(*l);
 
-                return 0;
-        }
+        } else {
 
-        r = manager_parse_dns_server(m, ltype, rvalue);
-        if (r < 0) {
-                log_syntax(unit, LOG_ERR, filename, line, -r, "Failed to parse DNS server string '%s'. Ignoring.", rvalue);
-                return 0;
+                /* Otherwise add to the list */
+                r = manager_parse_dns_server(m, ltype, rvalue);
+                if (r < 0) {
+                        log_syntax(unit, LOG_ERR, filename, line, -r, "Failed to parse DNS server string '%s'. Ignoring.", rvalue);
+                        return 0;
+                }
         }
 
+        /* If we have a manual setting, then we stop reading
+         * /etc/resolv.conf */
+        if (ltype == DNS_SERVER_SYSTEM)
+                m->read_resolv_conf = false;
+
         return 0;
 }