mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 04:00:09 +01:00
Add calls to g_simple_async_result_set_check_cancellable
If an operation is cancelled through the GCancellable, then the idiom is that the operation is always cancelled, even if it has finished successfully. To ensure this is the case, add calls to g_simple_async_result_set_check_cancellable everywhere. Without this, e.g. gnome-control-center will crash when switching away from the power panel quickly, as the NMClient creation finishes asynchronously and g-c-c assume that G_IO_ERROR_CANCELLED is returned to ensure it doesn't access the now invalid user_data parameter. https://bugzilla.gnome.org/show_bug.cgi?id=794088 (cherry picked from commit26c215e22d) (cherry picked from commite1b99d9201)
This commit is contained in:
parent
13064745b5
commit
2e62853509
14 changed files with 84 additions and 0 deletions
|
|
@ -205,6 +205,8 @@ initiate_authentication (PolkitAgentListener *listener,
|
|||
callback,
|
||||
user_data,
|
||||
initiate_authentication);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
if (priv->active_session != NULL) {
|
||||
g_simple_async_result_set_error (simple,
|
||||
POLKIT_ERROR,
|
||||
|
|
|
|||
|
|
@ -1612,6 +1612,8 @@ nm_client_check_connectivity_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_check_connectivity_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
g_simple_async_result_set_op_res_gpointer (simple, ccd, (GDestroyNotify) check_connectivity_data_free);
|
||||
|
||||
if (cancellable) {
|
||||
|
|
@ -1738,6 +1740,8 @@ nm_client_new_async (GCancellable *cancellable,
|
|||
}
|
||||
|
||||
simple = g_simple_async_result_new (NULL, callback, user_data, nm_client_new_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
g_async_initable_init_async (G_ASYNC_INITABLE (client), G_PRIORITY_DEFAULT,
|
||||
cancellable, client_inited, simple);
|
||||
}
|
||||
|
|
@ -2001,6 +2005,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
init_data->client = NM_CLIENT (initable);
|
||||
init_data->result = g_simple_async_result_new (G_OBJECT (initable), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->result, cancellable);
|
||||
g_simple_async_result_set_op_res_gboolean (init_data->result, TRUE);
|
||||
|
||||
/* Check if NM is running */
|
||||
|
|
|
|||
|
|
@ -303,6 +303,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
GSimpleAsyncResult *simple;
|
||||
|
||||
simple = g_simple_async_result_new (G_OBJECT (initable), callback, user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
/* Check if NM is running */
|
||||
dbus_g_proxy_begin_call (priv->bus_proxy, "NameHasOwner",
|
||||
|
|
|
|||
|
|
@ -713,6 +713,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
init_data->connection = NM_REMOTE_CONNECTION (initable);
|
||||
init_data->result = g_simple_async_result_new (G_OBJECT (initable), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->result, cancellable);
|
||||
|
||||
dbus_g_proxy_begin_call (priv->proxy, "GetSettings",
|
||||
init_get_settings_cb, init_data, NULL,
|
||||
|
|
|
|||
|
|
@ -1115,6 +1115,8 @@ nm_remote_settings_new_async (DBusGConnection *bus, GCancellable *cancellable,
|
|||
GSimpleAsyncResult *simple;
|
||||
|
||||
simple = g_simple_async_result_new (NULL, callback, user_data, nm_remote_settings_new_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
self = g_object_new (NM_TYPE_REMOTE_SETTINGS,
|
||||
NM_REMOTE_SETTINGS_BUS, bus,
|
||||
|
|
@ -1367,6 +1369,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
init_data->settings = NM_REMOTE_SETTINGS (initable);
|
||||
init_data->result = g_simple_async_result_new (G_OBJECT (initable), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->result, cancellable);
|
||||
|
||||
/* Check if NM is running */
|
||||
dbus_g_proxy_begin_call (priv->dbus_proxy, "NameHasOwner",
|
||||
|
|
|
|||
|
|
@ -646,6 +646,8 @@ nm_client_check_connectivity_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_check_connectivity_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_manager_check_connectivity_async (NM_CLIENT_GET_PRIVATE (client)->manager,
|
||||
cancellable, check_connectivity_cb, simple);
|
||||
}
|
||||
|
|
@ -755,6 +757,8 @@ nm_client_save_hostname_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_save_hostname_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_remote_settings_save_hostname_async (NM_CLIENT_GET_PRIVATE (client)->settings,
|
||||
hostname,
|
||||
cancellable, save_hostname_cb, simple);
|
||||
|
|
@ -1042,6 +1046,8 @@ nm_client_activate_connection_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_activate_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_manager_activate_connection_async (NM_CLIENT_GET_PRIVATE (client)->manager,
|
||||
connection, device, specific_object,
|
||||
cancellable, activate_cb, simple);
|
||||
|
|
@ -1147,6 +1153,8 @@ nm_client_add_and_activate_connection_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_add_and_activate_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_manager_add_and_activate_connection_async (NM_CLIENT_GET_PRIVATE (client)->manager,
|
||||
partial, device, specific_object,
|
||||
cancellable, add_activate_cb, simple);
|
||||
|
|
@ -1250,6 +1258,8 @@ nm_client_deactivate_connection_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_deactivate_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
if (!_nm_client_check_nm_running (client, NULL)) {
|
||||
g_simple_async_result_set_op_res_gboolean (simple, TRUE);
|
||||
|
|
@ -1456,6 +1466,8 @@ nm_client_add_connection_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_add_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_remote_settings_add_connection_async (NM_CLIENT_GET_PRIVATE (client)->settings,
|
||||
connection, save_to_disk,
|
||||
cancellable, add_connection_cb, simple);
|
||||
|
|
@ -1581,6 +1593,8 @@ nm_client_load_connections_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_load_connections_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_remote_settings_load_connections_async (NM_CLIENT_GET_PRIVATE (client)->settings,
|
||||
filenames,
|
||||
cancellable, load_connections_cb, simple);
|
||||
|
|
@ -1693,6 +1707,8 @@ nm_client_reload_connections_async (NMClient *client,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (client), callback, user_data,
|
||||
nm_client_reload_connections_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nm_remote_settings_reload_connections_async (NM_CLIENT_GET_PRIVATE (client)->settings,
|
||||
cancellable, reload_connections_cb, simple);
|
||||
}
|
||||
|
|
@ -1859,6 +1875,8 @@ nm_client_new_async (GCancellable *cancellable,
|
|||
GSimpleAsyncResult *simple;
|
||||
|
||||
simple = g_simple_async_result_new (NULL, callback, user_data, nm_client_new_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
g_async_initable_new_async (NM_TYPE_CLIENT, G_PRIORITY_DEFAULT,
|
||||
cancellable, client_inited, simple,
|
||||
|
|
@ -2484,6 +2502,8 @@ prepare_object_manager (NMClient *client,
|
|||
init_data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
|
||||
init_data->result = g_simple_async_result_new (G_OBJECT (client), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->result, cancellable);
|
||||
g_simple_async_result_set_op_res_gboolean (init_data->result, TRUE);
|
||||
|
||||
g_dbus_object_manager_client_new_for_bus (_nm_dbus_bus_type (),
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ _nm_dbus_new_connection_async (GCancellable *cancellable,
|
|||
GSimpleAsyncResult *simple;
|
||||
|
||||
simple = g_simple_async_result_new (NULL, callback, user_data, _nm_dbus_new_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
g_bus_get (_nm_dbus_bus_type (),
|
||||
cancellable,
|
||||
|
|
|
|||
|
|
@ -407,6 +407,8 @@ _device_wifi_request_scan_async (NMDeviceWifi *device,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (device), callback, user_data,
|
||||
nm_device_wifi_request_scan_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
/* If a scan is in progress, just return */
|
||||
if (priv->scan_info) {
|
||||
|
|
|
|||
|
|
@ -1993,6 +1993,8 @@ nm_device_reapply_async (NMDevice *device,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (device), callback, user_data,
|
||||
nm_device_reapply_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_device_call_reapply (NM_DEVICE_GET_PRIVATE (device)->proxy,
|
||||
dict, version_id, flags, cancellable,
|
||||
|
|
@ -2156,6 +2158,8 @@ nm_device_get_applied_connection_async (NMDevice *device,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (device), callback, user_data,
|
||||
nm_device_get_applied_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_device_call_get_applied_connection (NM_DEVICE_GET_PRIVATE (device)->proxy,
|
||||
flags, cancellable,
|
||||
|
|
@ -2277,6 +2281,8 @@ nm_device_disconnect_async (NMDevice *device,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (device), callback, user_data,
|
||||
nm_device_disconnect_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_device_call_disconnect (NM_DEVICE_GET_PRIVATE (device)->proxy,
|
||||
cancellable,
|
||||
|
|
@ -2378,6 +2384,8 @@ nm_device_delete_async (NMDevice *device,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (device), callback, user_data,
|
||||
nm_device_delete_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_device_call_delete (NM_DEVICE_GET_PRIVATE (device)->proxy,
|
||||
cancellable,
|
||||
|
|
|
|||
|
|
@ -635,6 +635,8 @@ nm_manager_check_connectivity_async (NMManager *manager,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (manager), callback, user_data,
|
||||
nm_manager_check_connectivity_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nmdbus_manager_call_check_connectivity (priv->proxy,
|
||||
cancellable,
|
||||
check_connectivity_cb, simple);
|
||||
|
|
@ -919,6 +921,8 @@ nm_manager_activate_connection_async (NMManager *manager,
|
|||
info->manager = manager;
|
||||
info->simple = g_simple_async_result_new (G_OBJECT (manager), callback, user_data,
|
||||
nm_manager_activate_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (info->simple, cancellable);
|
||||
info->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
|
||||
|
||||
priv = NM_MANAGER_GET_PRIVATE (manager);
|
||||
|
|
@ -995,6 +999,8 @@ nm_manager_add_and_activate_connection_async (NMManager *manager,
|
|||
info->manager = manager;
|
||||
info->simple = g_simple_async_result_new (G_OBJECT (manager), callback, user_data,
|
||||
nm_manager_add_and_activate_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (info->simple, cancellable);
|
||||
info->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
|
||||
|
||||
priv = NM_MANAGER_GET_PRIVATE (manager);
|
||||
|
|
@ -1128,6 +1134,8 @@ nm_manager_deactivate_connection_async (NMManager *manager,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (manager), callback, user_data,
|
||||
nm_manager_deactivate_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
path = nm_object_get_path (NM_OBJECT (active));
|
||||
nmdbus_manager_call_deactivate_connection (NM_MANAGER_GET_PRIVATE (manager)->proxy,
|
||||
|
|
@ -1265,6 +1273,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
init_data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
|
||||
init_data->result = g_simple_async_result_new (G_OBJECT (initable), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->result, cancellable);
|
||||
g_simple_async_result_set_op_res_gboolean (init_data->result, TRUE);
|
||||
|
||||
nm_manager_parent_async_initable_iface->init_async (initable, io_priority, cancellable,
|
||||
|
|
|
|||
|
|
@ -1144,6 +1144,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
init_data = g_slice_new0 (NMObjectInitData);
|
||||
init_data->object = self;
|
||||
init_data->simple = g_simple_async_result_new (G_OBJECT (initable), callback, user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->simple, cancellable);
|
||||
init_data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
|
||||
|
||||
interfaces = g_dbus_object_get_interfaces (priv->object);
|
||||
|
|
|
|||
|
|
@ -157,6 +157,8 @@ nm_remote_connection_commit_changes_async (NMRemoteConnection *connection,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
|
||||
nm_remote_connection_commit_changes_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
settings = nm_connection_to_dbus (NM_CONNECTION (connection), NM_CONNECTION_SERIALIZE_ALL);
|
||||
if (save_to_disk) {
|
||||
|
|
@ -273,6 +275,8 @@ nm_remote_connection_save_async (NMRemoteConnection *connection,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
|
||||
nm_remote_connection_save_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nmdbus_settings_connection_call_save (priv->proxy, cancellable, save_cb, simple);
|
||||
}
|
||||
|
||||
|
|
@ -371,6 +375,8 @@ nm_remote_connection_delete_async (NMRemoteConnection *connection,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
|
||||
nm_remote_connection_delete_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
nmdbus_settings_connection_call_delete (priv->proxy, cancellable, delete_cb, simple);
|
||||
}
|
||||
|
||||
|
|
@ -483,6 +489,8 @@ nm_remote_connection_get_secrets_async (NMRemoteConnection *connection,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
|
||||
nm_remote_connection_get_secrets_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_settings_connection_call_get_secrets (priv->proxy,
|
||||
setting_name,
|
||||
|
|
@ -724,6 +732,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
init_data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
|
||||
init_data->result = g_simple_async_result_new (G_OBJECT (initable), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->result, cancellable);
|
||||
init_data->initable = initable;
|
||||
init_data->io_priority = io_priority;
|
||||
|
||||
|
|
|
|||
|
|
@ -315,6 +315,8 @@ nm_remote_settings_add_connection_async (NMRemoteSettings *settings,
|
|||
info->self = settings;
|
||||
info->simple = g_simple_async_result_new (G_OBJECT (settings), callback, user_data,
|
||||
nm_remote_settings_add_connection_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (info->simple, cancellable);
|
||||
info->saved = save_to_disk;
|
||||
|
||||
new_settings = nm_connection_to_dbus (connection, NM_CONNECTION_SERIALIZE_ALL);
|
||||
|
|
@ -415,6 +417,8 @@ nm_remote_settings_load_connections_async (NMRemoteSettings *settings,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (settings), callback, user_data,
|
||||
nm_remote_settings_load_connections_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_settings_call_load_connections (priv->proxy,
|
||||
(const char * const *) filenames,
|
||||
|
|
@ -497,6 +501,8 @@ nm_remote_settings_reload_connections_async (NMRemoteSettings *settings,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (settings), callback, user_data,
|
||||
nm_remote_settings_reload_connections_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_settings_call_reload_connections (priv->proxy, cancellable,
|
||||
reload_connections_cb, simple);
|
||||
|
|
@ -574,6 +580,8 @@ nm_remote_settings_save_hostname_async (NMRemoteSettings *settings,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (settings), callback, user_data,
|
||||
nm_remote_settings_save_hostname_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
nmdbus_settings_call_save_hostname (priv->proxy,
|
||||
hostname ? hostname : "",
|
||||
|
|
|
|||
|
|
@ -683,6 +683,8 @@ nm_secret_agent_old_register_async (NMSecretAgentOld *self,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
|
||||
nm_secret_agent_old_register_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
if (!check_nm_running (self, &error)) {
|
||||
g_simple_async_result_take_error (simple, error);
|
||||
|
|
@ -826,6 +828,8 @@ nm_secret_agent_old_unregister_async (NMSecretAgentOld *self,
|
|||
|
||||
simple = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
|
||||
nm_secret_agent_old_unregister_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (simple, cancellable);
|
||||
|
||||
if (!check_nm_running (self, &error)) {
|
||||
g_simple_async_result_take_error (simple, error);
|
||||
|
|
@ -1159,6 +1163,8 @@ init_async (GAsyncInitable *initable, int io_priority,
|
|||
|
||||
init_data->simple = g_simple_async_result_new (G_OBJECT (initable), callback,
|
||||
user_data, init_async);
|
||||
if (cancellable)
|
||||
g_simple_async_result_set_check_cancellable (init_data->simple, cancellable);
|
||||
|
||||
_nm_dbus_new_connection_async (cancellable, init_async_got_bus, init_data);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue