changeset 28390:fd495ede2f3a

merge of '33ac448c0d0fbe2bd41ad24c9d2e8faa14fafa69' and '8868b966ec81185b033adaf17af1a06143d2edb1'
author Paul Aurich <paul@darkrain42.org>
date Fri, 16 Oct 2009 01:27:25 +0000
parents a020c6abc852 (diff) 583a2f6ae576 (current diff)
children b7d60f0e1df2
files
diffstat 3 files changed, 32 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Oct 16 01:16:38 2009 +0000
+++ b/ChangeLog	Fri Oct 16 01:27:25 2009 +0000
@@ -9,6 +9,9 @@
 	* Fix building the GnuTLS plugin with older versions of GnuTLS.
 	* Fix DNS TXT query resolution.
 
+	AIM and ICQ:
+	* Fix blocking and other privacy lists.  (Thanks to AOL)
+
 	XMPP:
 	* Users connecting to Google Talk now have an "Initiate Chat" context menu
 	  option for their buddies.  (Eion Robb)
--- a/libpurple/protocols/oscar/oscar.c	Fri Oct 16 01:16:38 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Fri Oct 16 01:27:25 2009 +0000
@@ -3909,12 +3909,8 @@
 	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));
 
@@ -3957,6 +3953,22 @@
 	aim_srv_requestnew(od, SNAC_FAMILY_ALERT);
 	aim_srv_requestnew(od, SNAC_FAMILY_CHATNAV);
 
+	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;
 }
 
@@ -5396,6 +5408,15 @@
 	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;
 }
 
--- a/libpurple/protocols/oscar/oscar.h	Fri Oct 16 01:16:38 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.h	Fri Oct 16 01:27:25 2009 +0000
@@ -535,6 +535,10 @@
 		struct aim_userinfo_s *userinfo;
 	} locate;
 
+	struct {
+		gboolean have_rights;
+	} bos;
+
 	/* Server-stored information (ssi) */
 	struct {
 		gboolean received_data;