Mercurial > pidgin.yaz
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); |