Mercurial > pidgin.yaz
changeset 28758:3161c687d7bc
Don't call aim_src_clientready() until we have activated our feedbag
(and also until after we have our bos rights, but I'm not sure if that
matters). This fixes the bug where AIM block lists recently stopped
working. I imagine AIM permit lists were also broken, as well as the
three ICQ privacy lists.
It's conceivable that this will also fix the bug where your contact
list is sometimes empty, but I have no evidence to support that either
way.
This change will be in the next release of Pidgin, 2.6.3, which will
probably be released within the next week.
Thanks to AOL for telling me what we were doing wrong.
Fixes #10489
Fixes #10499
Fixes #10509
Refs #10411
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 15 Oct 2009 23:42:27 +0000 |
parents | d5ff2cd6064a |
children | a020c6abc852 |
files | libpurple/protocols/oscar/oscar.c libpurple/protocols/oscar/oscar.h |
diffstat | 2 files changed, 29 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/oscar.c Thu Oct 15 16:13:57 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Thu Oct 15 23:42:27 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 Thu Oct 15 16:13:57 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.h Thu Oct 15 23:42:27 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;