summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWen Liang <liangwen12year@gmail.com>2022-08-24 11:39:21 -0400
committerWen Liang <liangwen12year@gmail.com>2022-08-25 12:31:48 -0400
commit6058445aea1e1db0ff2369bd1b2c628063faf5e8 (patch)
treefcdbb5ca35632198baf6bdfb011b6f1ffcdfbf39
parent9b3a96f82153fc0461bbd1924c7547116193714c (diff)
dns: kill pending dnsmasq process when mode is not 'dnsmasq'wl/dns
When NM starts, if `main.dns` is not `dnsmasq`, then the pending dnsmasq process should be killed by NM. https://bugzilla.redhat.com/show_bug.cgi?id=2120763 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1344
-rw-r--r--src/core/dns/nm-dns-dnsmasq.c8
-rw-r--r--src/core/dns/nm-dns-dnsmasq.h2
-rw-r--r--src/core/dns/nm-dns-manager.c3
3 files changed, 13 insertions, 0 deletions
diff --git a/src/core/dns/nm-dns-dnsmasq.c b/src/core/dns/nm-dns-dnsmasq.c
index d88d3de681..cc7c03a21b 100644
--- a/src/core/dns/nm-dns-dnsmasq.c
+++ b/src/core/dns/nm-dns-dnsmasq.c
@@ -668,6 +668,14 @@ _gl_pid_spawn(const char *dm_binary,
/*****************************************************************************/
+void
+nm_dnsmasq_kill_external(void)
+{
+ _gl_pid_kill_external();
+}
+
+/*****************************************************************************/
+
typedef struct {
GDBusConnection *dbus_connection;
diff --git a/src/core/dns/nm-dns-dnsmasq.h b/src/core/dns/nm-dns-dnsmasq.h
index 575b0b263f..98761d3d9f 100644
--- a/src/core/dns/nm-dns-dnsmasq.h
+++ b/src/core/dns/nm-dns-dnsmasq.h
@@ -25,4 +25,6 @@ GType nm_dns_dnsmasq_get_type(void);
NMDnsPlugin *nm_dns_dnsmasq_new(void);
+void nm_dnsmasq_kill_external(void);
+
#endif /* __NETWORKMANAGER_DNS_DNSMASQ_H__ */
diff --git a/src/core/dns/nm-dns-manager.c b/src/core/dns/nm-dns-manager.c
index 1e54452aa4..16af1d2dfe 100644
--- a/src/core/dns/nm-dns-manager.c
+++ b/src/core/dns/nm-dns-manager.c
@@ -2506,6 +2506,9 @@ again:
self);
}
+ if (!NM_IS_DNS_DNSMASQ(priv->plugin))
+ nm_dnsmasq_kill_external();
+
_update_pending_maybe_changed(self);
g_object_thaw_notify(G_OBJECT(self));