summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2018-10-16 22:03:29 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2018-10-16 22:03:29 +0200
commit5ad9a46df348900a1116c93f8e047b5f8274dbdc (patch)
tree09670277e7c43531a42725bd59ed6c33ef95ee26
parentd1818ea16dde684f684aa468669002a8d7faa4b2 (diff)
downloadNetworkManager-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.c10
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) {