From 1db6b01b2fab159acdb110d8e55e54962ea2ad24 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Thu, 26 Jan 2017 14:20:01 +0100 Subject: [PATCH] manager: avoid an extra path to ac translation The ac might already be unexported which would lead to a crash. In any case, it's just unnecessary. --- src/nm-manager.c | 18 +++++++----------- src/nm-manager.h | 2 +- src/nm-policy.c | 2 +- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index a3215bd8f5..7dfaa5abf8 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -3879,20 +3879,12 @@ error: gboolean nm_manager_deactivate_connection (NMManager *manager, - const char *connection_path, + NMActiveConnection *active, NMDeviceStateReason reason, GError **error) { - NMActiveConnection *active; gboolean success = FALSE; - active = active_connection_get_by_path (manager, connection_path); - if (!active) { - g_set_error_literal (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_CONNECTION_NOT_ACTIVE, - "The connection was not active."); - return FALSE; - } - if (NM_IS_VPN_CONNECTION (active)) { NMVpnConnectionStateReason vpn_reason = NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED; @@ -3936,6 +3928,7 @@ deactivate_net_auth_done_cb (NMAuthChain *chain, path = nm_auth_chain_get_data (chain, "path"); result = nm_auth_chain_get_result (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL); + active = active_connection_get_by_path (self, path); if (auth_error) { _LOGD (LOGD_CORE, "Disconnect request failed: %s", auth_error->message); @@ -3947,16 +3940,19 @@ deactivate_net_auth_done_cb (NMAuthChain *chain, error = g_error_new_literal (NM_MANAGER_ERROR, NM_MANAGER_ERROR_PERMISSION_DENIED, "Not authorized to deactivate connections"); + } else if (!active) { + error = g_error_new_literal (NM_MANAGER_ERROR, + NM_MANAGER_ERROR_CONNECTION_NOT_ACTIVE, + "The connection was not active."); } else { /* success; deactivation allowed */ if (!nm_manager_deactivate_connection (self, - path, + active, NM_DEVICE_STATE_REASON_USER_REQUESTED, &error)) nm_assert (error); } - active = active_connection_get_by_path (self, path); if (active) { nm_audit_log_connection_op (NM_AUDIT_OP_CONN_DEACTIVATE, nm_active_connection_get_settings_connection (active), diff --git a/src/nm-manager.h b/src/nm-manager.h index 13cae375be..c69fc9e192 100644 --- a/src/nm-manager.h +++ b/src/nm-manager.h @@ -115,7 +115,7 @@ NMActiveConnection *nm_manager_activate_connection (NMManager *manager, GError **error); gboolean nm_manager_deactivate_connection (NMManager *manager, - const char *connection_path, + NMActiveConnection *active, NMDeviceStateReason reason, GError **error); diff --git a/src/nm-policy.c b/src/nm-policy.c index 266bc5b1c4..a8719d9f37 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -2024,7 +2024,7 @@ _deactivate_if_active (NMManager *manager, NMSettingsConnection *connection) if (nm_active_connection_get_settings_connection (ac) == connection && (state <= NM_ACTIVE_CONNECTION_STATE_ACTIVATED)) { if (!nm_manager_deactivate_connection (manager, - nm_exported_object_get_path (NM_EXPORTED_OBJECT (ac)), + ac, NM_DEVICE_STATE_REASON_CONNECTION_REMOVED, &error)) { _LOGW (LOGD_DEVICE, "connection '%s' disappeared, but error deactivating it: (%d) %s",