From 07046462f788a8df1a2a2d739ce4cebbdbc84cb6 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 29 Jul 2014 14:46:34 +0200 Subject: [PATCH] libnm-glib: disconnect the connectivity check cancellable signal after the call has ended (bgo #733915) We cannot rely on connectivity data freeing to disconnect the signal, because the simple async result might be kept alive by external code (for example the language runtime for JS), but we must not call dbus_g_proxy_cancel_call() if that cancellable is cancelled or reused afterwards. https://bugzilla.gnome.org/show_bug.cgi?id=733915 --- libnm-glib/nm-client.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libnm-glib/nm-client.c b/libnm-glib/nm-client.c index 819baa7ddc..c020f9ffdb 100644 --- a/libnm-glib/nm-client.c +++ b/libnm-glib/nm-client.c @@ -1481,6 +1481,11 @@ check_connectivity_cb (DBusGProxy *proxy, CheckConnectivityData *ccd = g_simple_async_result_get_op_res_gpointer (simple); GError *error = NULL; + if (ccd->cancellable) { + g_signal_handler_disconnect (ccd->cancellable, ccd->cancelled_id); + ccd->cancelled_id = 0; + } + if (!dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_UINT, &ccd->connectivity, G_TYPE_INVALID))