summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mcd-account-manager-default.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/mcd-account-manager-default.c b/src/mcd-account-manager-default.c
index e156de1b..221c5d07 100644
--- a/src/mcd-account-manager-default.c
+++ b/src/mcd-account-manager-default.c
@@ -411,6 +411,10 @@ _set (const McpAccountStorage *self,
/* if we have a keyring, secrets are segregated */
secret = mcp_account_manager_parameter_is_secret (am, account, key);
+ /* remove it from both sets, then re-add it to the right one if non-null */
+ g_key_file_remove_key (amd->secrets, account, key, NULL);
+ g_key_file_remove_key (amd->keyfile, account, key, NULL);
+
if (val != NULL)
{
if (secret)
@@ -418,13 +422,6 @@ _set (const McpAccountStorage *self,
else
g_key_file_set_value (amd->keyfile, account, key, val);
}
- else
- {
- if (secret)
- g_key_file_remove_key (amd->secrets, account, key, NULL);
- else
- g_key_file_remove_key (amd->keyfile, account, key, NULL);
- }
/* if we removed the account before, it now exists again, so... */
g_hash_table_remove (amd->removed_accounts, account);
@@ -561,8 +558,10 @@ _delete (const McpAccountStorage *self,
g_key_file_remove_group (amd->keyfile, account, NULL);
_delete_from_keyring (self, am, account, NULL);
}
- else if (mcp_account_manager_parameter_is_secret (am, account, key))
+ else
{
+ /* always delete from keyring, even if we didn't previously
+ * think it was secret - we might have been wrong */
_delete_from_keyring (self, am, account, key);
}