summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-08-10 09:57:56 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2017-08-10 13:42:22 +0200
commitbb2a8a4c8612690e5e84146c86949e2058e543a0 (patch)
treea61c89fae9a7db05cfce54e8f125ab84cda38eb1
parent73de9d3e375ca0f7a8ad9be905b1449a6be0b457 (diff)
agent-simple: always ask VPN secrets having the ONE_TIME flag
-rw-r--r--clients/common/nm-secret-agent-simple.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/clients/common/nm-secret-agent-simple.c b/clients/common/nm-secret-agent-simple.c
index 0faf68a567..4b45e48fbc 100644
--- a/clients/common/nm-secret-agent-simple.c
+++ b/clients/common/nm-secret-agent-simple.c
@@ -57,6 +57,7 @@ typedef struct {
gchar *request_id;
NMConnection *connection;
gchar **hints;
+ NMSecretAgentGetSecretsFlags flags;
NMSecretAgentOldGetSecretsFunc callback;
gpointer callback_data;
} NMSecretAgentSimpleRequest;
@@ -363,7 +364,11 @@ get_vpn_secret_flags (NMSettingVpn *s_vpn, const char *secret_name)
}
static void
-add_vpn_secret_helper (GPtrArray *secrets, NMSettingVpn *s_vpn, const char *name, const char *ui_name)
+add_vpn_secret_helper (GPtrArray *secrets,
+ NMSettingVpn *s_vpn,
+ const char *name,
+ const char *ui_name,
+ NMVpnPluginSecretsFlags request_flags)
{
NMSecretAgentSimpleSecret *secret;
NMSettingSecretFlags flags;
@@ -379,7 +384,8 @@ add_vpn_secret_helper (GPtrArray *secrets, NMSettingVpn *s_vpn, const char *name
flags = get_vpn_secret_flags (s_vpn, name);
if ( flags & NM_SETTING_SECRET_FLAG_AGENT_OWNED
- || flags & NM_SETTING_SECRET_FLAG_NOT_SAVED) {
+ || flags & NM_SETTING_SECRET_FLAG_NOT_SAVED
+ || request_flags & NM_VPN_PLUGIN_SECRETS_FLAG_ONE_TIME) {
secret = nm_secret_agent_simple_secret_new (ui_name,
NM_SETTING (s_vpn),
NM_SETTING_VPN_SECRETS,
@@ -408,7 +414,7 @@ add_vpn_secrets (NMSecretAgentSimpleRequest *request,
if (!vpn_msg && g_str_has_prefix (*iter, VPN_MSG_TAG))
vpn_msg = &(*iter)[NM_STRLEN (VPN_MSG_TAG)];
else
- add_vpn_secret_helper (secrets, s_vpn, *iter, *iter);
+ add_vpn_secret_helper (secrets, s_vpn, *iter, *iter, request->flags);
}
}
@@ -417,7 +423,8 @@ add_vpn_secrets (NMSecretAgentSimpleRequest *request,
/* Now add what client thinks might be required, because hints may be empty or incomplete */
p = secret_names = nm_vpn_get_secret_names (nm_setting_vpn_get_service_type (s_vpn));
while (p && p->name) {
- add_vpn_secret_helper (secrets, s_vpn, p->name, _(p->ui_name));
+ add_vpn_secret_helper (secrets, s_vpn, p->name, _(p->ui_name),
+ NM_VPN_PLUGIN_SECRETS_FLAG_NONE);
p++;
}
@@ -647,6 +654,7 @@ nm_secret_agent_simple_get_secrets (NMSecretAgentOld *agent,
request->callback = callback;
request->callback_data = callback_data;
request->request_id = request_id;
+ request->flags = flags;
g_hash_table_replace (priv->requests, request->request_id, request);
if (priv->enabled)