Mercurial > pidgin
diff libpurple/protocols/bonjour/mdns_common.c @ 18845:09f52521ff5b
Fix bonjour buddy icons to work with iChat.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Wed, 08 Aug 2007 18:14:46 +0000 |
parents | 7bf6b9a70b41 |
children | 1787e601aafc |
line wrap: on
line diff
--- a/libpurple/protocols/bonjour/mdns_common.c Wed Aug 08 01:50:01 2007 +0000 +++ b/libpurple/protocols/bonjour/mdns_common.c Wed Aug 08 18:14:46 2007 +0000 @@ -67,40 +67,11 @@ _mdns_publish(data, PUBLISH_UPDATE); /* <--We must control the errors */ } -void -bonjour_dns_sd_buddy_icon_data_set(BonjourDnsSd *data) { - PurpleStoredImage *img = purple_buddy_icons_find_account_icon(data->account); - gconstpointer avatar_data; - gsize avatar_len; - gchar *enc; - int i; - unsigned char hashval[20]; - char *p, hash[41]; - - g_return_if_fail(img != NULL); - - avatar_data = purple_imgstore_get_data(img); - avatar_len = purple_imgstore_get_size(img); - - enc = purple_base64_encode(avatar_data, avatar_len); - - purple_cipher_digest_region("sha1", avatar_data, - avatar_len, sizeof(hashval), - hashval, NULL); - - purple_imgstore_unref(img); - - p = hash; - for(i=0; i<20; i++, p+=2) - snprintf(p, 3, "%02x", hashval[i]); - - g_free(data->phsh); - data->phsh = g_strdup(hash); - - g_free(enc); - - /* Update our TXT record */ - _mdns_publish(data, PUBLISH_UPDATE); +/** + * Retrieve the buddy icon blob + */ +void bonjour_dns_sd_retrieve_buddy_icon(BonjourBuddy* buddy) { + _mdns_retrieve_retrieve_buddy_icon(buddy); } void @@ -114,7 +85,30 @@ avatar_data = purple_imgstore_get_data(img); avatar_len = purple_imgstore_get_size(img); - _mdns_set_buddy_icon_data(data, avatar_data, avatar_len); + if (_mdns_set_buddy_icon_data(data, avatar_data, avatar_len)) { + int i; + gchar *enc; + char *p, hash[41]; + unsigned char hashval[20]; + + enc = purple_base64_encode(avatar_data, avatar_len); + + purple_cipher_digest_region("sha1", avatar_data, + avatar_len, sizeof(hashval), + hashval, NULL); + + p = hash; + for(i=0; i<20; i++, p+=2) + snprintf(p, 3, "%02x", hashval[i]); + + g_free(data->phsh); + data->phsh = g_strdup(hash); + + g_free(enc); + + /* Update our TXT record */ + _mdns_publish(data, PUBLISH_UPDATE); + } purple_imgstore_unref(img); } else {