Mercurial > pidgin
diff libpurple/protocols/jabber/caps.c @ 25147:6d6e10476c52
Clean up jabber_presence_send
* Split out a version that acts as part of the prpl_info struct from one
called internally
Fix jabber_caps_broadcast_change
* "prpl-jabber"
* Don't leak memory
* Send a full presence stanza
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Fri, 21 Nov 2008 04:18:19 +0000 |
parents | 4040da08a733 |
children | 6adbaf3d25e3 1eeeb33ed021 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/caps.c Fri Nov 21 00:35:44 2008 +0000 +++ b/libpurple/protocols/jabber/caps.c Fri Nov 21 04:18:19 2008 +0000 @@ -867,16 +867,19 @@ return js->caps_hash; } -void jabber_caps_broadcast_change() { - GList *active_accounts = purple_accounts_get_all_active(); - for (active_accounts = purple_accounts_get_all_active(); active_accounts; active_accounts = active_accounts->next) { - PurpleAccount *account = active_accounts->data; - if (!strcmp(account->protocol_id, "jabber")) { - PurpleConnection *conn = account->gc; - JabberStream *js = conn->proto_data; - xmlnode *presence = jabber_presence_create_js(js, JABBER_BUDDY_STATE_UNKNOWN, 0, 0); - jabber_send(js, presence); +void jabber_caps_broadcast_change() +{ + GList *node, *accounts = purple_accounts_get_all_active(); + + for (node = accounts; node; node = node->next) { + PurpleAccount *account = node->data; + const char *prpl_id = purple_account_get_protocol_id(account); + if (!strcmp("prpl-jabber", prpl_id)) { + PurpleConnection *gc = purple_account_get_connection(account); + jabber_presence_send(gc->proto_data, TRUE); } } + + g_list_free(accounts); }