X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fresolve%2Fresolved-manager.c;h=167bea39b372849c07ea76666134f87c32b87b9d;hp=0594479787606127426a59e9b2a477f4352735e7;hb=2eec67acbb00593e414549a7e5b35eb7dd776b1b;hpb=56f64d95763a799ba4475daf44d8e9f72a1bd474
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
index 059447978..167bea39b 100644
--- a/src/resolve/resolved-manager.c
+++ b/src/resolve/resolved-manager.c
@@ -19,18 +19,13 @@
along with systemd; If not, see .
***/
-#include
#include
-#include
#include
-#include
+#include
#include
#include "rtnl-util.h"
-#include "event-util.h"
-#include "network-util.h"
#include "network-internal.h"
-#include "conf-parser.h"
#include "socket-util.h"
#include "af-list.h"
#include "utf8.h"
@@ -196,7 +191,7 @@ static int manager_rtnl_listen(Manager *m) {
assert(m);
- /* First, subscibe to interfaces coming and going */
+ /* First, subscribe to interfaces coming and going */
r = sd_rtnl_open(&m->rtnl, 3, RTNLGRP_LINK, RTNLGRP_IPV4_IFADDR, RTNLGRP_IPV6_IFADDR);
if (r < 0)
return r;
@@ -667,6 +662,16 @@ int manager_read_resolv_conf(Manager *m) {
if (s->marked)
dns_server_free(s);
+ /* Whenever /etc/resolv.conf changes, start using the first
+ * DNS server of it. This is useful to deal with broken
+ * network managing implementations (like NetworkManager),
+ * that when connecting to a VPN place both the VPN DNS
+ * servers and the local ones in /etc/resolv.conf. Without
+ * resetting the DNS server to use back to the first entry we
+ * will continue to use the local one thus being unable to
+ * resolve VPN domains. */
+ manager_set_dns_server(m, m->dns_servers);
+
return 0;
clear: