diff options
author | Marius Halden <marius.h@lden.org> | 2016-04-25 19:26:51 +0200 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2016-05-07 14:31:03 +0200 |
commit | 55ae34366cc42a3c1822718b47b4b65eb67c014b (patch) | |
tree | f025cdd091cc53fb0167424480dccd1fadc3b747 /protocols/purple/purple.c | |
parent | 5c743e0ed30650c40a3989bb9e13563dfffeeaaf (diff) |
Save password for purple accounts on logout if password is missing or if
it has changed, this is useful for accounts using oauth e.g.
purple-hangouts.
Diffstat (limited to 'protocols/purple/purple.c')
-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); |