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 {