From c4e325f8ddcd0f694be167622ac67a0bbed14842 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 379c787909..9e6ba09e61 100644 --- a/libnm-glib/nm-client.c +++ b/libnm-glib/nm-client.c @@ -1483,6 +1483,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))