summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2018-11-19 16:13:09 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2018-11-19 16:13:09 +0100
commit4bea4c5d41ff9fcd3a5fd9c0fbba3ee1e2611e04 (patch)
treea260265e75556b09a9b4b148f07964ffa099b72c
parent1398c7fed9b307d26bfe3ab2c047a8d14283b19a (diff)
downloadNetworkManager-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.c24
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) {