# HG changeset patch # User Mark Doliner # Date 1200469049 0 # Node ID 22908b354baf7e7bd6b4a47d134e4d9b5756f70d # Parent df77b89a402540b4a3f59726ba9eecdf8161e637 Two performance/network bandwidth related changes here, care of meebo. 1. Only auto-fetch stuff for people who are away, because we really only want their away message. This changes oscar to NOT auto-fetch people's profile info. That doesn't matter for Pidgin and I don't think it matters for Finch. If it causes bad things for Adium or other things then please let me know. 2. When auto-fetching stuff, only request the away message and not the profile info, because we really only want the away message. Again, if this causes bad things to happen then please let me know. diff -r df77b89a4025 -r 22908b354baf libpurple/protocols/oscar/family_buddy.c --- a/libpurple/protocols/oscar/family_buddy.c Wed Jan 16 07:32:30 2008 +0000 +++ b/libpurple/protocols/oscar/family_buddy.c Wed Jan 16 07:37:29 2008 +0000 @@ -219,8 +219,9 @@ if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) ret = userfunc(od, conn, frame, &userinfo); - if (snac->subtype == SNAC_SUBTYPE_BUDDY_ONCOMING) - aim_locate_requestuserinfo(od, userinfo.sn); + if (snac->subtype == SNAC_SUBTYPE_BUDDY_ONCOMING && userinfo.flags & AIM_FLAG_AWAY) + aim_locate_autofetch_away_message(od, userinfo.sn); + aim_info_free(&userinfo); return ret; diff -r df77b89a4025 -r 22908b354baf libpurple/protocols/oscar/family_locate.c --- a/libpurple/protocols/oscar/family_locate.c Wed Jan 16 07:32:30 2008 +0000 +++ b/libpurple/protocols/oscar/family_locate.c Wed Jan 16 07:37:29 2008 +0000 @@ -386,11 +386,11 @@ } void -aim_locate_requestuserinfo(OscarData *od, const char *sn) +aim_locate_autofetch_away_message(OscarData *od, const char *sn) { struct userinfo_node *cur; - /* Make sure we haven't already requested info for this buddy */ + /* Make sure we haven't already made an info request for this buddy */ for (cur = od->locate.requested; cur != NULL; cur = cur->next) if (aim_sncmp(sn, cur->sn) == 0) return; @@ -401,7 +401,7 @@ cur->next = od->locate.requested; od->locate.requested = cur; - aim_locate_getinfoshort(od, cur->sn, 0x00000003); + aim_locate_getinfoshort(od, cur->sn, 0x00000002); } aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn) { diff -r df77b89a4025 -r 22908b354baf libpurple/protocols/oscar/oscar.h --- a/libpurple/protocols/oscar/oscar.h Wed Jan 16 07:32:30 2008 +0000 +++ b/libpurple/protocols/oscar/oscar.h Wed Jan 16 07:37:29 2008 +0000 @@ -1074,7 +1074,7 @@ /* 0x000f */ int aim_locate_setinterests(OscarData *od, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, guint16 privacy); /* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags); -void aim_locate_requestuserinfo(OscarData *od, const char *sn); +void aim_locate_autofetch_away_message(OscarData *od, const char *sn); guint32 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len); guint32 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len); void aim_info_free(aim_userinfo_t *);