diff options
-rw-r--r-- | src/settings/nm-agent-manager.c | 13 | ||||
-rw-r--r-- | src/settings/nm-agent-manager.h | 3 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index 2d99a6e06f..c6d19734bf 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -815,8 +815,17 @@ get_done_cb (NMSecretAgent *agent, req, parent->detail, req->setting_name, error ? error->code : -1, (error && error->message) ? error->message : "(unknown)"); - /* Try the next agent */ - request_next_agent (parent); + + if (!dbus_g_error_has_name (error, NM_DBUS_INTERFACE_SECRET_AGENT ".UserCanceled")) { + error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, + NM_AGENT_MANAGER_ERROR_USER_CANCELED, + "User canceled the secrets request."); + req_complete_error (parent, error); + g_error_free (error); + } else { + /* Try the next agent */ + request_next_agent (parent); + } return; } diff --git a/src/settings/nm-agent-manager.h b/src/settings/nm-agent-manager.h index d6db0df2f3..5fdd66ef6f 100644 --- a/src/settings/nm-agent-manager.h +++ b/src/settings/nm-agent-manager.h @@ -41,7 +41,8 @@ typedef enum { NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER, /*< nick=InvalidIdentifier >*/ NM_AGENT_MANAGER_ERROR_NOT_REGISTERED, /*< nick=NotRegistered >*/ NM_AGENT_MANAGER_ERROR_INTERNAL_ERROR, /*< nick=InternalError >*/ - NM_AGENT_MANAGER_ERROR_NO_SECRETS /*< nick=NoSecrets >*/ + NM_AGENT_MANAGER_ERROR_NO_SECRETS, /*< nick=NoSecrets >*/ + NM_AGENT_MANAGER_ERROR_USER_CANCELED /*< nick=UserCanceled >*/ } NMAgentManagerError; typedef struct { |