X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-conf.c;h=63e87f8df52c44cae9d49c663d2af8cb442a58da;hb=430e21c2f7e77d600257ead56419f511e48e854a;hp=0def80e3a578d84276348192d3924e64f2715ff1;hpb=4e945a6f7971fd7d1f6b2c62ee3afdaff3c95ce4;p=elogind.git diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c index 0def80e3a..63e87f8df 100644 --- a/src/resolve/resolved-conf.c +++ b/src/resolve/resolved-conf.c @@ -81,7 +81,6 @@ int config_parse_dnsv( void *userdata) { Manager *m = userdata; - DnsServer **l; int r; assert(filename); @@ -89,24 +88,22 @@ int config_parse_dnsv( assert(rvalue); assert(m); - if (ltype == DNS_SERVER_FALLBACK) - l = &m->fallback_dns_servers; - else - l = &m->dns_servers; - - /* Empty assignment means clear the list */ - if (isempty(rvalue)) { - while (*l) - dns_server_free(*l); - - return 0; + if (isempty(rvalue)) + /* Empty assignment means clear the list */ + manager_flush_dns_servers(m, ltype); + else { + /* 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; + } } - 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; }