diff libpurple/protocols/jabber/jabber.h @ 25740:9ab681f23007

propagate from branch 'im.pidgin.pidgin' (head c36cf6e54e25bff1ff7802082ae3c787d658187c) to branch 'org.darkrain42.pidgin.xmpp' (head 92d6837c02024957e64a843d1b409cf944cc89fc)
author Paul Aurich <paul@darkrain42.org>
date Thu, 20 Nov 2008 21:57:52 +0000
parents 907ca9a36fe0 3c3032be12de
children 1225f3dcf5ab
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.h	Thu Nov 20 21:13:56 2008 +0000
+++ b/libpurple/protocols/jabber/jabber.h	Thu Nov 20 21:57:52 2008 +0000
@@ -109,6 +109,37 @@
 	GHashTable *buddies;
 	gboolean roster_parsed;
 
+	/*
+	 * This boolean was added to eliminate a heinous bug where we would
+	 * get into a loop with the server and move a buddy back and forth
+	 * from one group to another.
+	 *
+	 * The sequence goes something like this:
+	 * 1. Our resource and another resource both approve an authorization
+	 *    request at the exact same time.  We put the buddy in group A and
+	 *    the other resource put the buddy in group B.
+	 * 2. The server receives the roster add for group B and sends us a
+	 *    roster push.
+	 * 3. We receive this roster push and modify our local blist.  This
+	 *    triggers us to send a roster add for group B.
+	 * 4. The server recieves our earlier roster add for group A and sends
+	 *    us a roster push.
+	 * 5. We receive this roster push and modify our local blist.  This
+	 *    triggers us to send a roster add for group A.
+	 * 6. The server receives our earlier roster add for group B and sends
+	 *    us a roster push.
+	 * (repeat steps 3 through 6 ad infinitum)
+	 *
+	 * This boolean is used to short-circuit the sending of a roster add
+	 * when we receive a roster push.
+	 *
+	 * See these bug reports:
+	 * http://trac.adiumx.com/ticket/8834
+	 * http://developer.pidgin.im/ticket/5484
+	 * http://developer.pidgin.im/ticket/6188
+	 */
+	gboolean currently_parsing_roster_push;
+
 	GHashTable *chats;
 	GList *chat_servers;
 	PurpleRoomlist *roomlist;
@@ -207,9 +238,15 @@
 	guint srv_rec_idx;
 	guint max_srv_rec_idx;
 
-	/* BOSH stuff*/
-    gboolean use_bosh;
-    PurpleBOSHConnection bosh;
+	/* BOSH stuff */
+	gboolean use_bosh;
+	PurpleBOSHConnection bosh;
+
+	/**
+	 * This linked list contains PurpleUtilFetchUrlData structs
+	 * for when we lookup buddy icons from a url
+	 */
+	GSList *url_datas;
 };
 
 typedef gboolean (JabberFeatureEnabled)(JabberStream *js, const gchar *namespace);