comparison src/protocols/oscar/oscar.c @ 11024:1d58cc6c4552

[gaim-migrate @ 12897] sf patch #1222377, from Evan Schoenberg "Improve buddy icon retrieval" committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Thu, 23 Jun 2005 02:24:22 +0000
parents bb7fd9359f9e
children 50224ac8184d
comparison
equal deleted inserted replaced
11023:9a99b0815459 11024:1d58cc6c4552
4630 GaimConnection *gc = sess->aux_data; 4630 GaimConnection *gc = sess->aux_data;
4631 OscarData *od = gc->proto_data; 4631 OscarData *od = gc->proto_data;
4632 GSList *cur; 4632 GSList *cur;
4633 va_list ap; 4633 va_list ap;
4634 char *sn; 4634 char *sn;
4635 fu8_t *iconcsum, *icon; 4635 fu8_t iconcsumtype, *iconcsum, *icon;
4636 fu16_t iconcsumlen, iconlen; 4636 fu16_t iconcsumlen, iconlen;
4637 4637
4638 va_start(ap, fr); 4638 va_start(ap, fr);
4639 sn = va_arg(ap, char *); 4639 sn = va_arg(ap, char *);
4640 iconcsumtype = va_arg(ap, int);
4640 iconcsum = va_arg(ap, fu8_t *); 4641 iconcsum = va_arg(ap, fu8_t *);
4641 iconcsumlen = va_arg(ap, int); 4642 iconcsumlen = va_arg(ap, int);
4642 icon = va_arg(ap, fu8_t *); 4643 icon = va_arg(ap, fu8_t *);
4643 iconlen = va_arg(ap, int); 4644 iconlen = va_arg(ap, int);
4644 va_end(ap); 4645 va_end(ap);
4645 4646
4646 if (iconlen > 0) { 4647 /*
4648 * Some AIM clients will send a blank GIF image with iconlen 90 when
4649 * no icon is set. Ignore these.
4650 */
4651 if ((iconlen > 0) && (iconlen != 90)) {
4647 char *b16; 4652 char *b16;
4648 GaimBuddy *b = gaim_find_buddy(gc->account, sn); 4653 GaimBuddy *b = gaim_find_buddy(gc->account, sn);
4649 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc), 4654 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
4650 sn, icon, iconlen); 4655 sn, icon, iconlen);
4651 b16 = gaim_base16_encode(iconcsum, iconcsumlen); 4656 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
4720 return FALSE; 4725 return FALSE;
4721 } 4726 }
4722 4727
4723 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data); 4728 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data);
4724 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) { 4729 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
4725 aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsum, userinfo->iconcsumlen); 4730 aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsumtype, userinfo->iconcsum, userinfo->iconcsumlen);
4726 return FALSE; 4731 return FALSE;
4727 } else { 4732 } else {
4728 char *sn = od->requesticon->data; 4733 char *sn = od->requesticon->data;
4729 od->requesticon = g_slist_remove(od->requesticon, sn); 4734 od->requesticon = g_slist_remove(od->requesticon, sn);
4730 free(sn); 4735 free(sn);