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
This commit is contained in:

committed by
Dan Williams

parent
833ea6944d
commit
07046462f7
@@ -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))
|
||||
|
Reference in New Issue
Block a user