adium.1-3: 9166882a: Apply Mark's "libpurple_fix_aim_blocklis...

zacw at adiumx.com zacw at adiumx.com
Fri Oct 16 10:25:45 EDT 2009


-----------------------------------------------------------------
Revision: 9166882a2852f0b4eb1e5e2a279baaf35c0212b2
Ancestor: ee77fb52bee587b4d2edaac3302fc9f698627825
Author: zacw at adiumx.com
Date: 2009-10-16T14:23:10
Branch: im.pidgin.adium.1-3
URL: http://d.pidgin.im/viewmtn/revision/info/9166882a2852f0b4eb1e5e2a279baaf35c0212b2

Modified files:
        libpurple/protocols/oscar/oscar.c
        libpurple/protocols/oscar/oscar.h

ChangeLog: 

Apply Mark's "libpurple_fix_aim_blocklist.diff".


-------------- next part --------------
============================================================
--- libpurple/protocols/oscar/oscar.c	26149590cddb9ce8a5255a026e45a127a8d0da58
+++ libpurple/protocols/oscar/oscar.c	5414f609f598f9a89e93b64bb40f498f9cfb3e1b
@@ -3891,12 +3891,8 @@ static int purple_bosrights(OscarData *o
 	od->rights.maxpermits = (guint)maxpermits;
 	od->rights.maxdenies = (guint)maxdenies;
 
-	purple_connection_set_state(gc, PURPLE_CONNECTED);
-
 	purple_debug_info("oscar", "buddy list loaded\n");
 
-	aim_srv_clientready(od, conn);
-
 	if (purple_account_get_user_info(account) != NULL)
 		serv_set_info(gc, purple_account_get_user_info(account));
 
@@ -3948,6 +3944,22 @@ static int purple_bosrights(OscarData *o
 	if ((od->authinfo->email != NULL) && ((strchr(gc->account->username, '@') == NULL)))
 		aim_srv_requestnew(od, SNAC_FAMILY_ALERT);
 
+	od->bos.have_rights = TRUE;
+
+	/*
+	 * If we've already received our feedbag data then we're not waiting on
+	 * anything else, so send the server clientready.
+	 *
+	 * Normally we get bos rights before we get our feedbag data, so this
+	 * rarely (never?) happens.  And I'm not sure it actually matters if we
+	 * wait for bos rights before calling clientready.  But it seems safer
+	 * to do it this way.
+	 */
+	if (od->ssi.received_data) {
+		aim_srv_clientready(od, conn);
+		purple_connection_set_state(gc, PURPLE_CONNECTED);
+	}
+
 	return 1;
 }
 
@@ -5387,6 +5399,15 @@ static int purple_ssi_parselist(OscarDat
 	oscar_set_icon(gc, img);
 	purple_imgstore_unref(img);
 
+	/*
+	 * If we've already received our bos rights then we're not waiting on
+	 * anything else, so send the server clientready.
+	 */
+	if (od->bos.have_rights) {
+		aim_srv_clientready(od, conn);
+		purple_connection_set_state(gc, PURPLE_CONNECTED);
+	}
+
 	return 1;
 }
 
============================================================
--- libpurple/protocols/oscar/oscar.h	6846afcaad3e902e2931f3ed6eea7f8693f4a69a
+++ libpurple/protocols/oscar/oscar.h	2228da4a9f39179f017a93121b99356733cb8498
@@ -530,6 +530,10 @@ struct _OscarData
 		struct userinfo_node *requested;
 	} locate;
 
+	struct {
+		gboolean have_rights;
+	} bos;
+
 	/* Server-stored information (ssi) */
 	struct {
 		gboolean received_data;


More information about the Commits mailing list