--- a/libpurple/protocols/bonjour/mdns_common.c Mon Apr 07 20:02:22 2014 +0530 +++ b/libpurple/protocols/bonjour/mdns_common.c Fri Apr 11 16:23:12 2014 +0530 @@ -179,35 +179,27 @@ } void bonjour_dns_sd_update_buddy_icon(BonjourDnsSd *data) { - PurpleStoredImage *img; + PurpleImage *img; if ((img = purple_buddy_icons_find_account_icon(data->account))) { gconstpointer avatar_data; gsize avatar_len; - avatar_data = purple_imgstore_get_data(img); - avatar_len = purple_imgstore_get_size(img); + avatar_data = purple_image_get_data(img); + avatar_len = purple_image_get_size(img); if (_mdns_set_buddy_icon_data(data, avatar_data, avatar_len)) { - /* The filename is a SHA-1 hash of the data (conveniently what we need) */ - const char *p, *filename = purple_imgstore_get_filename(img); - g_free(data->phsh); data->phsh = NULL; - /* Get rid of the extension */ - p = strchr(filename, '.'); - if (p) - data->phsh = g_strndup(filename, p - filename); - else - purple_debug_error("bonjour", "account buddy icon returned unexpected filename (%s)" - "; unable to extract hash. Clearing buddy icon\n", filename); + data->phsh = g_compute_checksum_for_data( + G_CHECKSUM_SHA1, avatar_data, avatar_len); /* Update our TXT record */ publish_presence(data, PUBLISH_UPDATE); } - purple_imgstore_unref(img); + g_object_unref(img); } else { /* We need to do this regardless of whether data->phsh is set so that we * cancel any icons that are currently in the process of being set */