Mercurial > pidgin.yaz
diff libpurple/protocols/jabber/presence.c @ 16386:e0c9a46b459f
Move the prpl icon checksum code into the core, so we can delete the
checksum if the cache file disappears.
See ticket #223
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 25 Apr 2007 00:56:13 +0000 |
parents | 84bf0f949b0b |
children | 24bbd7e46bfe |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/presence.c Tue Apr 24 20:23:50 2007 +0000 +++ b/libpurple/protocols/jabber/presence.c Wed Apr 25 00:56:13 2007 +0000 @@ -201,7 +201,6 @@ static void jabber_vcard_parse_avatar(JabberStream *js, xmlnode *packet, gpointer blah) { JabberBuddy *jb = NULL; - PurpleBuddy *b = NULL; xmlnode *vcard, *photo, *binval; char *text; guchar *data; @@ -221,21 +220,20 @@ (( (binval = xmlnode_get_child(photo, "BINVAL")) && (text = xmlnode_get_data(binval))) || (text = xmlnode_get_data(photo)))) { + unsigned char hashval[20]; + char hash[41], *p; + int i; + data = purple_base64_decode(text, &size); - purple_buddy_icons_set_for_user(js->gc->account, from, data, size); - if((b = purple_find_buddy(js->gc->account, from))) { - unsigned char hashval[20]; - char hash[41], *p; - int i; + purple_cipher_digest_region("sha1", data, size, + sizeof(hashval), hashval, NULL); + p = hash; + for(i=0; i<20; i++, p+=2) + snprintf(p, 3, "%02x", hashval[i]); - purple_cipher_digest_region("sha1", data, size, - sizeof(hashval), hashval, NULL); - p = hash; - for(i=0; i<20; i++, p+=2) - snprintf(p, 3, "%02x", hashval[i]); - purple_blist_node_set_string((PurpleBlistNode*)b, "avatar_hash", hash); - } + purple_buddy_icons_set_for_user(js->gc->account, from, data, size, hash); + g_free(data); g_free(text); } @@ -520,7 +518,7 @@ } if(avatar_hash) { - const char *avatar_hash2 = purple_blist_node_get_string((PurpleBlistNode*)b, "avatar_hash"); + const char *avatar_hash2 = purple_buddy_icons_get_checksum_for_user(b); if(!avatar_hash2 || strcmp(avatar_hash, avatar_hash2)) { JabberIq *iq; xmlnode *vcard;