aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorJonny Lamb <jonnylamb@gnome.org>2010-12-22 19:49:47 +0800
committerJonny Lamb <jonnylamb@gnome.org>2011-01-26 21:38:36 +0800
commit5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90 (patch)
treea60b4d1b79606f77b534c94aaebf0f00164102dc /libempathy
parent5b105c40c45bcf8be7d1489d224b1e0f4babadf8 (diff)
downloadgsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.tar
gsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.tar.gz
gsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.tar.bz2
gsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.tar.lz
gsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.tar.xz
gsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.tar.zst
gsoc2013-empathy-5ae2a942731d421ffa1b7cd6b3e12ea3edea8d90.zip
account-settings: migrate passwords from MC to gk ourselves
Signed-off-by: Jonny Lamb <jonnylamb@gnome.org>
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-account-settings.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c
index 37640cc20..d6f2c7fae 100644
--- a/libempathy/empathy-account-settings.c
+++ b/libempathy/empathy-account-settings.c
@@ -510,6 +510,53 @@ empathy_account_settings_check_readyness (EmpathyAccountSettings *self)
}
}
+ if (priv->supports_sasl && empathy_account_settings_get (
+ self, "password") != NULL)
+ {
+ /* mission-control still has our password, although the CM
+ * supports SASL. Let's try migrating it. */
+ const GValue *v;
+ const gchar *account_id;
+
+ account_id = tp_proxy_get_object_path (priv->account)
+ + strlen (TP_ACCOUNT_OBJECT_PATH_BASE);
+
+ g_print ("Trying to migrate password parameter from MC to the "
+ "keyring ourselves for account %s", account_id);
+
+ v = empathy_account_settings_get (self, "password");
+
+ /* I can't imagine why this would fail. */
+ if (G_VALUE_HOLDS_STRING (v))
+ {
+ const gchar *password = g_value_get_string (v);
+ const gchar *unset[] = { "password", NULL };
+
+ if (!EMP_STR_EMPTY (password))
+ {
+ GHashTable *empty = tp_asv_new (NULL, NULL);
+
+ empathy_keyring_set_password_async (priv->account, password,
+ NULL, NULL);
+
+ /* We don't want to request the password again, we
+ * already know it. */
+ priv->password_requested = TRUE;
+
+ priv->password = g_strdup (password);
+ priv->password_original = g_strdup (password);
+
+ /* Now clear the password MC has stored. */
+ tp_account_update_parameters_async (priv->account,
+ empty, unset, NULL, NULL);
+
+ g_hash_table_remove (priv->parameters, "password");
+
+ g_hash_table_unref (empty);
+ }
+ }
+ }
+
/* priv->account won't be a proper account if it's the account
* assistant showing this widget. */
if (priv->supports_sasl && !priv->password_requested