changeset 22126:22908b354baf

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.
author Mark Doliner <mark@kingant.net>
date Wed, 16 Jan 2008 07:37:29 +0000
parents df77b89a4025
children 91a4506b5808
files libpurple/protocols/oscar/family_buddy.c libpurple/protocols/oscar/family_locate.c libpurple/protocols/oscar/oscar.h
diffstat 3 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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;
--- 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) {
--- 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 *);