core: don't ask for password if it's marked NOT_REQUIRED
authorDan Williams <dcbw@redhat.com>
Tue, 19 Feb 2013 17:53:58 +0000 (11:53 -0600)
committerDan Williams <dcbw@redhat.com>
Tue, 19 Feb 2013 17:53:58 +0000 (11:53 -0600)
The secret flags were getting ignored by the core, so even if the
password was marked NOT_REQUIRED, it would be asked for.

src/nm-openvpn-service.c

index cabb5a0..7b4cbd7 100644 (file)
@@ -1115,6 +1115,7 @@ static const char *
 check_need_secrets (NMSettingVPN *s_vpn, gboolean *need_secrets)
 {
        const char *tmp, *key, *ctype;
+       NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE;
 
        g_return_val_if_fail (s_vpn != NULL, FALSE);
        g_return_val_if_fail (need_secrets != NULL, FALSE);
@@ -1132,12 +1133,22 @@ check_need_secrets (NMSettingVPN *s_vpn, gboolean *need_secrets)
                if (is_encrypted (key) && !nm_setting_vpn_get_secret (s_vpn, NM_OPENVPN_KEY_CERTPASS))
                        *need_secrets = TRUE;
 
-               if (!nm_setting_vpn_get_secret (s_vpn, NM_OPENVPN_KEY_PASSWORD))
+               if (!nm_setting_vpn_get_secret (s_vpn, NM_OPENVPN_KEY_PASSWORD)) {
                        *need_secrets = TRUE;
+                       if (nm_setting_get_secret_flags (NM_SETTING (s_vpn), NM_OPENVPN_KEY_PASSWORD, &secret_flags, NULL)) {
+                               if (secret_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)
+                                       *need_secrets = FALSE;
+                       }
+               }
        } else if (!strcmp (ctype, NM_OPENVPN_CONTYPE_PASSWORD)) {
                /* Will require a password */
-               if (!nm_setting_vpn_get_secret (s_vpn, NM_OPENVPN_KEY_PASSWORD))
+               if (!nm_setting_vpn_get_secret (s_vpn, NM_OPENVPN_KEY_PASSWORD)) {
                        *need_secrets = TRUE;
+                       if (nm_setting_get_secret_flags (NM_SETTING (s_vpn), NM_OPENVPN_KEY_PASSWORD, &secret_flags, NULL)) {
+                               if (secret_flags & NM_SETTING_SECRET_FLAG_NOT_REQUIRED)
+                                       *need_secrets = FALSE;
+                       }
+               }
        } else if (!strcmp (ctype, NM_OPENVPN_CONTYPE_TLS)) {
                /* May require private key password */
                key = nm_setting_vpn_get_data_item (s_vpn, NM_OPENVPN_KEY_KEY);