aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy/empathy-account-settings.c99
1 files changed, 54 insertions, 45 deletions
diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c
index af8cd7b65..647c88d60 100644
--- a/libempathy/empathy-account-settings.c
+++ b/libempathy/empathy-account-settings.c
@@ -456,6 +456,59 @@ empathy_account_settings_get_password_cb (GObject *source,
}
static void
+empathy_account_settings_try_migrating_password (EmpathyAccountSettings *self)
+{
+ EmpathyAccountSettingsPriv *priv = GET_PRIV (self);
+ const GValue *v;
+ const gchar *account_id, *password;
+ const gchar *unset[] = { "password", NULL };
+ GHashTable *empty;
+
+ if (!priv->supports_sasl || empathy_account_settings_get (
+ self, "password") == NULL)
+ return;
+
+ /* mission-control still has our password, although the CM
+ * supports SASL. Let's try migrating it. */
+
+ account_id = tp_proxy_get_object_path (priv->account)
+ + strlen (TP_ACCOUNT_OBJECT_PATH_BASE);
+
+ DEBUG ("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))
+ return;
+
+ password = g_value_get_string (v);
+
+ if (EMP_STR_EMPTY (password))
+ return;
+
+ 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. */
+ empty = tp_asv_new (NULL, NULL);
+ tp_account_update_parameters_async (priv->account,
+ empty, unset, NULL, NULL);
+
+ g_hash_table_remove (priv->parameters, "password");
+
+ g_hash_table_unref (empty);
+}
+
+static void
empathy_account_settings_check_readyness (EmpathyAccountSettings *self)
{
EmpathyAccountSettingsPriv *priv = GET_PRIV (self);
@@ -542,52 +595,8 @@ 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);
- }
- }
- }
+ empathy_account_settings_try_migrating_password (self);
/* priv->account won't be a proper account if it's the account
* assistant showing this widget. */