diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2018-11-19 16:13:09 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2018-11-19 16:13:09 +0100 |
commit | 4bea4c5d41ff9fcd3a5fd9c0fbba3ee1e2611e04 (patch) | |
tree | a260265e75556b09a9b4b148f07964ffa099b72c | |
parent | 1398c7fed9b307d26bfe3ab2c047a8d14283b19a (diff) | |
download | NetworkManager-bg/cli-editor-save-rh1546805.tar.gz |
fixup! cli: wait for changed signal after updating a connectionbg/cli-editor-save-rh1546805
-rw-r--r-- | clients/cli/connections.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 8188840682..841d0f938a 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -7228,7 +7228,6 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t gboolean temp_changes; GError *err1 = NULL; NmcEditorMenuContext menu_ctx = { 0 }; - gulong handler_id; s_con = nm_connection_get_setting_connection (connection); if (s_con) @@ -7254,7 +7253,7 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t gs_free char *cmd_arg_s = NULL; gs_free char *cmd_arg_p = NULL; gs_free char *cmd_arg_v = NULL; - gboolean dirty, connection_changed; + gboolean dirty; /* Connection is dirty? (not saved or differs from the saved) */ dirty = is_connection_dirty (connection, rem_con); @@ -7743,8 +7742,10 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t /* Save the connection */ if (nm_connection_verify (connection, &err1)) { gboolean persistent = TRUE; + gboolean connection_changed; nm_auto_unref_gsource GSource *source = NULL; gboolean timeout = FALSE; + gulong handler_id = 0; /* parse argument */ if (cmd_arg) { @@ -7776,21 +7777,19 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t connection, add_connection_editor_cb, info); + connection_changed = TRUE; } else { /* Save/update already saved (existing) connection */ nm_connection_replace_settings_from_connection (NM_CONNECTION (rem_con), connection); update_connection (persistent, rem_con, update_connection_editor_cb, NULL); - } - - - - connection_changed = FALSE; - handler_id = g_signal_connect (rem_con, - NM_CONNECTION_CHANGED, - G_CALLBACK (editor_connection_changed_cb), - &connection_changed); + handler_id = g_signal_connect (rem_con, + NM_CONNECTION_CHANGED, + G_CALLBACK (editor_connection_changed_cb), + &connection_changed); + connection_changed = FALSE; + } source = g_timeout_source_new (10 * NM_UTILS_MSEC_PER_SECOND); g_source_set_callback (source, editor_save_timeout, &timeout, NULL); @@ -7802,7 +7801,8 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t while (!connection_changed && !timeout) g_main_context_iteration (NULL, TRUE); - g_signal_handler_disconnect (rem_con, handler_id); + if (handler_id) + g_signal_handler_disconnect (rem_con, handler_id); g_source_destroy (source); if (nmc_editor_error) { |