diff options
-rw-r--r-- | protocols/purple/purple.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c index 11a7eac6..2b3a09a3 100644 --- a/protocols/purple/purple.c +++ b/protocols/purple/purple.c @@ -278,6 +278,18 @@ static void purple_init(account_t *acc) purple_accounts_remove(pa); } +static void purple_save_password(account_t *acc, PurpleAccount *pa) +{ + char *old_password, *new_password; + + old_password = set_getstr(&acc->set, "password"); + new_password = g_strdup(purple_account_get_password(pa)); + if (!old_password || !*old_password || g_strcmp0(old_password, new_password) != 0) { + set_setstr(&acc->set, "password", new_password); + } + g_free(new_password); +} + static void purple_sync_settings(account_t *acc, PurpleAccount *pa) { PurplePlugin *prpl = purple_plugins_find_with_id(pa->protocol_id); @@ -365,6 +377,8 @@ static void purple_logout(struct im_connection *ic) imcb_chat_free(ic->groupchats->data); } + purple_save_password(ic->acc, pd->account); + purple_account_set_enabled(pd->account, "BitlBee", FALSE); purple_connections = g_slist_remove(purple_connections, ic); purple_accounts_remove(pd->account); |