summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2014-11-06 14:49:03 +0100
committerJiří Klimeš <jklimes@redhat.com>2014-11-06 14:53:37 +0100
commit7f93163c1cb2a559a507a3600504752673be620f (patch)
treeb2e85edfbe7733f711ce05495ed702c8dc55218b
parent32600a9035ca46f05f2730d5be5e4f72ab5f99f5 (diff)
downloadNetworkManager-jk/nmcli-fixes.tar.gz
cli: fix an error path in second level 'set' command of nmcli editorjk/nmcli-fixes
Test case: nmcli> goto ipv4.addresses nmcli ipv4.addresses> set 1.1.1.1 Do you also want to set 'ipv4.method' to 'manual'? [yes]: no nmcli ipv4.addresses> set 3.3.3.3/99 Error: failed to set 'addresses' property: invalid prefix '99'; <1-32> allowed Do you also want to set 'ipv4.method' to 'manual'? [yes]: The question for failed 'set' should not be asked.
-rw-r--r--clients/cli/connections.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index 174ad8dfeb..4d48e2fb60 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -6755,8 +6755,12 @@ property_edit_submenu (NmCli *nmc,
if (!set_result) {
g_print (_("Error: failed to set '%s' property: %s\n"), prop_name, tmp_err->message);
g_clear_error (&tmp_err);
- if (cmdsub == NMC_EDITOR_SUB_CMD_SET)
+ if (cmdsub == NMC_EDITOR_SUB_CMD_SET) {
+ /* Block change signals and restore original value */
+ g_signal_handlers_block_matched (curr_setting, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, NULL);
nmc_property_set_gvalue (curr_setting, prop_name, &prop_g_value);
+ g_signal_handlers_unblock_matched (curr_setting, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, NULL);
+ }
}
if (G_IS_VALUE (&prop_g_value))
g_value_unset (&prop_g_value);
@@ -6773,7 +6777,9 @@ property_edit_submenu (NmCli *nmc,
if (!nmc_setting_set_property (curr_setting, prop_name, prop_val_user, &tmp_err)) {
g_print (_("Error: failed to set '%s' property: %s\n"), prop_name, tmp_err->message);
g_clear_error (&tmp_err);
+ g_signal_handlers_block_matched (curr_setting, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, NULL);
nmc_property_set_gvalue (curr_setting, prop_name, &prop_g_value);
+ g_signal_handlers_unblock_matched (curr_setting, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, NULL);
}
g_free (prop_val_user);
if (G_IS_VALUE (&prop_g_value))