Mercurial > pidgin
view libpurple/dbus-useful.c @ 22416:0c098ebe9f16
Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
espcially noticeable for people with very large buddy lists.
The problem was that we can receive the Yahoo p15 buddy list in multiple
packets, and the server expects us to remember the group for which we're
receiving buddies, as it won't remind us.
Our logic is "no group means blocked," which is why these buddies became blocked.
Fixes http://trac.adiumx.com/ticket/7744
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Wed, 05 Mar 2008 00:26:44 +0000 |
parents | 32c366eeeb99 |
children | 4ca97b26a8fb f75041cb3fec |
line wrap: on
line source
#include <string.h> #include <glib.h> #include "dbus-useful.h" #include "conversation.h" #include "util.h" PurpleAccount * purple_accounts_find_ext(const char *name, const char *protocol_id, gboolean (*account_test)(const PurpleAccount *account)) { PurpleAccount *result = NULL; GList *l; char *who; if (name) who = g_strdup(purple_normalize(NULL, name)); else who = NULL; for (l = purple_accounts_get_all(); l != NULL; l = l->next) { PurpleAccount *account = (PurpleAccount *)l->data; if (who && strcmp(purple_normalize(NULL, purple_account_get_username(account)), who)) continue; if (protocol_id && strcmp(account->protocol_id, protocol_id)) continue; if (account_test && !account_test(account)) continue; result = account; break; } g_free(who); return result; } PurpleAccount *purple_accounts_find_any(const char *name, const char *protocol) { return purple_accounts_find_ext(name, protocol, NULL); } PurpleAccount *purple_accounts_find_connected(const char *name, const char *protocol) { return purple_accounts_find_ext(name, protocol, purple_account_is_connected); }