From 53473d0b795e3d4fbd1e2a787396c90ca9e17893 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Thu, 4 Mar 2021 09:21:24 -0500 Subject: [PATCH] core/dns: emit CONFIG_CHANGED signal even if caching With systemd-resolved, NetworkManager considers `/etc/resolv.conf` unmanaged. This breaks hostname lookups in a subtle way: when a new connection comes online, NM will initiate the hostname lookup *before* propagating DNS updates to systemd-resolved, which of course will cause the request to fail. And because NM doesn't update `/etc/resolv.conf`, it doesn't emit a `CONFIG_CHANGED` signal which would've restarted the lookup. Fix this by emitting a signal also when using a caching DNS plugin. https://bugzilla.redhat.com/show_bug.cgi?id=1933863 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/770 (cherry picked from commit 1c0932a6e66880f5b4c92fcd2d13cbba29238a14) --- src/core/dns/nm-dns-manager.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/dns/nm-dns-manager.c b/src/core/dns/nm-dns-manager.c index f318b9b89b..f7c30fe34c 100644 --- a/src/core/dns/nm-dns-manager.c +++ b/src/core/dns/nm-dns-manager.c @@ -1815,8 +1815,8 @@ plugin_skip:; NM_DNS_MANAGER_RESOLV_CONF_MAN_UNMANAGED); } - /* signal that resolv.conf was changed */ - if (do_update && result == SR_SUCCESS) + /* signal that DNS resolution configs were changed */ + if ((do_update || caching) && result == SR_SUCCESS) g_signal_emit(self, signals[CONFIG_CHANGED], 0); nm_clear_pointer(&priv->config_variant, g_variant_unref);