From 19c22a13b2a43400dabc5956700dbb355b722d25 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Fri, 16 Feb 2018 18:28:51 +0100 Subject: [PATCH] core/connection: don't emit Updated on Connection.GetSecrets The secrets are transient -- when they are loaded into the connections and subsequently cleared the connection itself doesn't change. The Update signal is to be emmited only on explicit Update()/Update2() or ClearSecrets() which is already the case. Apart from Update being wrong, it has the ill effect of causing libnm to drop secrets from the cached connection. (cherry picked from commit 66ae0cc306683e8f7f012c64192397ed17489e42) --- libnm-core/nm-connection.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c index 9c88cfd6e0..f70be09fda 100644 --- a/libnm-core/nm-connection.c +++ b/libnm-core/nm-connection.c @@ -1576,10 +1576,8 @@ nm_connection_update_secrets (NMConnection *connection, } } - if (updated) { + if (updated) g_signal_emit (connection, signals[SECRETS_UPDATED], 0, setting_name); - g_signal_emit (connection, signals[CHANGED], 0); - } return success; } @@ -1657,20 +1655,17 @@ nm_connection_clear_secrets (NMConnection *connection) { GHashTableIter iter; NMSetting *setting; - gboolean changed = FALSE; g_return_if_fail (NM_IS_CONNECTION (connection)); g_hash_table_iter_init (&iter, NM_CONNECTION_GET_PRIVATE (connection)->settings); while (g_hash_table_iter_next (&iter, NULL, (gpointer) &setting)) { g_signal_handlers_block_by_func (setting, (GCallback) setting_changed_cb, connection); - changed |= _nm_setting_clear_secrets (setting); + _nm_setting_clear_secrets (setting); g_signal_handlers_unblock_by_func (setting, (GCallback) setting_changed_cb, connection); } g_signal_emit (connection, signals[SECRETS_CLEARED], 0); - if (changed) - g_signal_emit (connection, signals[CHANGED], 0); } /** @@ -1689,20 +1684,17 @@ nm_connection_clear_secrets_with_flags (NMConnection *connection, { GHashTableIter iter; NMSetting *setting; - gboolean changed = FALSE; g_return_if_fail (NM_IS_CONNECTION (connection)); g_hash_table_iter_init (&iter, NM_CONNECTION_GET_PRIVATE (connection)->settings); while (g_hash_table_iter_next (&iter, NULL, (gpointer) &setting)) { g_signal_handlers_block_by_func (setting, (GCallback) setting_changed_cb, connection); - changed |= _nm_setting_clear_secrets_with_flags (setting, func, user_data); + _nm_setting_clear_secrets_with_flags (setting, func, user_data); g_signal_handlers_unblock_by_func (setting, (GCallback) setting_changed_cb, connection); } g_signal_emit (connection, signals[SECRETS_CLEARED], 0); - if (changed) - g_signal_emit (connection, signals[CHANGED], 0); } /**