diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2018-10-16 22:03:29 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2018-10-16 22:03:29 +0200 |
commit | 5ad9a46df348900a1116c93f8e047b5f8274dbdc (patch) | |
tree | 09670277e7c43531a42725bd59ed6c33ef95ee26 | |
parent | d1818ea16dde684f684aa468669002a8d7faa4b2 (diff) | |
download | NetworkManager-bg/vpn-ask-username-rh1535517.tar.gz |
cli: don't ask secrets from connection if there are hintsbg/vpn-ask-username-rh1535517
If hints already specify what should be asked, don't also ask secrets
from the connection. As an exception, the interactive username should
not preempt other secrets.
-rw-r--r-- | clients/common/nm-secret-agent-simple.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/clients/common/nm-secret-agent-simple.c b/clients/common/nm-secret-agent-simple.c index 70428e7a37..84dddc658b 100644 --- a/clients/common/nm-secret-agent-simple.c +++ b/clients/common/nm-secret-agent-simple.c @@ -430,20 +430,28 @@ add_vpn_secrets (NMSecretAgentSimpleRequest *request, NMSettingVpn *s_vpn = nm_connection_get_setting_vpn (request->connection); const VpnPasswordName *secret_names, *p; const char *vpn_msg = NULL; + gboolean ask_from_setting = TRUE; char **iter; + /* If hints are given, then always ask for what the hints require */ if (request->hints) { for (iter = request->hints; *iter; iter++) { if (!vpn_msg && g_str_has_prefix (*iter, VPN_MSG_TAG)) vpn_msg = &(*iter)[NM_STRLEN (VPN_MSG_TAG)]; - else + else { add_vpn_secret_helper (secrets, s_vpn, *iter, *iter); + if (!nm_streq (*iter, "x-vpn-interactive-username")) + ask_from_setting = FALSE; + } } } NM_SET_OUT (msg, g_strdup (vpn_msg)); + if (!ask_from_setting) + return TRUE; + /* 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) { |