summaryrefslogtreecommitdiff
path: root/src/dns-manager/nm-dns-dnsmasq.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dns-manager/nm-dns-dnsmasq.c')
-rw-r--r--src/dns-manager/nm-dns-dnsmasq.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c
index 45ec353171..ad8daf16e0 100644
--- a/src/dns-manager/nm-dns-dnsmasq.c
+++ b/src/dns-manager/nm-dns-dnsmasq.c
@@ -288,6 +288,25 @@ add_ip_config_data (NMDnsDnsmasq *self, GVariantBuilder *servers, const NMDnsIPC
}
static void
+dnsmasq_clear_cache_done (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data)
+{
+ NMDnsDnsmasq *self;
+ gs_free_error GError *error = NULL;
+ gs_unref_variant GVariant *response = NULL;
+
+ response = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ return;
+
+ self = NM_DNS_DNSMASQ (user_data);
+
+ if (!response)
+ _LOGW ("dnsmasq cache clear failed: %s", error->message);
+ else
+ _LOGD ("dnsmasq update successful, cache cleared");
+}
+
+static void
dnsmasq_update_done (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data)
{
NMDnsDnsmasq *self;
@@ -304,8 +323,16 @@ dnsmasq_update_done (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data)
if (!response)
_LOGW ("dnsmasq update failed: %s", error->message);
- else
- _LOGD ("dnsmasq update successful");
+ else {
+ g_dbus_proxy_call (priv->dnsmasq,
+ "ClearCache",
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ priv->update_cancellable,
+ (GAsyncReadyCallback) dnsmasq_clear_cache_done,
+ self);
+ }
}
static void