diff options
author | Dan Winship <danw@gnome.org> | 2013-11-25 13:54:59 -0500 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2013-12-03 16:41:00 -0500 |
commit | c9c6c73166a90bacc0816def593459b623cd18b1 (patch) | |
tree | 3308ee62e387751925e43e488cf18f638ff1898e | |
parent | a8ef01b2c688cd562d42c41aa7b66867def5e01e (diff) | |
download | NetworkManager-c9c6c73166a90bacc0816def593459b623cd18b1.tar.gz |
agent-manager: if an agent returns UserCanceled, stop
If an agent returns a UserCanceled error in response to a secrets
request, don't ask any other remaining secret agents for secrets.
-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 { |