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);
 }