# HG changeset patch # User Paul Aurich # Date 1255656445 0 # Node ID fd495ede2f3aea9261d44c3139118b0ad79ea868 # Parent a020c6abc8520f1276881f703a3226ca42ed169f# Parent 583a2f6ae5760ca0ea4c4fbbf86711176946f55e merge of '33ac448c0d0fbe2bd41ad24c9d2e8faa14fafa69' and '8868b966ec81185b033adaf17af1a06143d2edb1' diff -r 583a2f6ae576 -r fd495ede2f3a ChangeLog --- 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) diff -r 583a2f6ae576 -r fd495ede2f3a libpurple/protocols/oscar/oscar.c --- 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; } diff -r 583a2f6ae576 -r fd495ede2f3a libpurple/protocols/oscar/oscar.h --- 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;