mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-03-02 20:10:28 +01:00
cli: check for deactivation failures
If the D-Bus call to DeactivateConnection() fails, don't wait for the
connection to change state because this is not going to
happen. Instead, notify the user of the error and, if necessary, wait
for remaining connections to be deactivated.
https://bugzilla.redhat.com/show_bug.cgi?id=1422786
(cherry picked from commit 67d144dd1e)
This commit is contained in:
parent
45bef0ad17
commit
9029dabb87
1 changed files with 23 additions and 4 deletions
|
|
@ -2749,7 +2749,7 @@ do_connection_down (NmCli *nmc, int argc, char **argv)
|
|||
NMActiveConnection *active;
|
||||
ConnectionCbInfo *info = NULL;
|
||||
const GPtrArray *active_cons;
|
||||
GSList *queue = NULL, *iter;
|
||||
GSList *queue = NULL, *iter, *next;
|
||||
char **arg_arr = NULL;
|
||||
char **arg_ptr;
|
||||
int arg_num;
|
||||
|
|
@ -2842,17 +2842,36 @@ do_connection_down (NmCli *nmc, int argc, char **argv)
|
|||
info->timeout_id = g_timeout_add_seconds (nmc->timeout, connection_op_timeout_cb, info);
|
||||
}
|
||||
|
||||
for (iter = queue; iter; iter = g_slist_next (iter)) {
|
||||
iter = queue;
|
||||
while (iter) {
|
||||
GError *error = NULL;
|
||||
|
||||
next = g_slist_next (iter);
|
||||
active = iter->data;
|
||||
|
||||
if (info)
|
||||
if (info) {
|
||||
g_signal_connect (active,
|
||||
"notify::" NM_ACTIVE_CONNECTION_STATE,
|
||||
G_CALLBACK (down_active_connection_state_cb),
|
||||
info);
|
||||
}
|
||||
|
||||
/* Now deactivate the connection */
|
||||
nm_client_deactivate_connection (nmc->client, active, NULL, NULL);
|
||||
if (!nm_client_deactivate_connection (nmc->client, active, NULL, &error)) {
|
||||
g_print (_("Connection '%s' deactivation failed: %s\n"),
|
||||
nm_active_connection_get_id (active), error->message);
|
||||
g_error_free (error);
|
||||
|
||||
if (info) {
|
||||
g_signal_handlers_disconnect_by_func (active,
|
||||
down_active_connection_state_cb,
|
||||
info);
|
||||
/* Remove the active connection from @queue */
|
||||
connection_cb_info_finish (info, active);
|
||||
}
|
||||
}
|
||||
|
||||
iter = next;
|
||||
}
|
||||
|
||||
finish:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue