summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2013-11-25 13:54:59 -0500
committerDan Winship <danw@gnome.org>2013-12-03 16:41:00 -0500
commitc9c6c73166a90bacc0816def593459b623cd18b1 (patch)
tree3308ee62e387751925e43e488cf18f638ff1898e
parenta8ef01b2c688cd562d42c41aa7b66867def5e01e (diff)
downloadNetworkManager-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.c13
-rw-r--r--src/settings/nm-agent-manager.h3
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 {