diff libpurple/protocols/msn/contact.c @ 28369:d213c8ad89da

Fix MSN forgetting display names for buddies. Fixes #10421. committer: John Bailey <rekkanoryo@rekkanoryo.org>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Mon, 12 Oct 2009 17:45:17 +0000
parents 203839bc0f7c
children c3f79073c9be
line wrap: on
line diff
--- a/libpurple/protocols/msn/contact.c	Mon Oct 12 08:27:03 2009 +0000
+++ b/libpurple/protocols/msn/contact.c	Mon Oct 12 17:45:17 2009 +0000
@@ -356,9 +356,10 @@
 	char *type;
 	char *member_id;
 	MsnUser *user;
-	xmlnode *annotation;
+	xmlnode *annotation, *display;
 	guint nid = MSN_NETWORK_UNKNOWN;
 	char *invite = NULL;
+	char *display_text;
 
 	passport = xmlnode_get_data(xmlnode_get_child(member, node));
 	if (!purple_email_is_valid(passport)) {
@@ -368,7 +369,13 @@
 
 	type = xmlnode_get_data(xmlnode_get_child(member, "Type"));
 	member_id = xmlnode_get_data(xmlnode_get_child(member, "MembershipId"));
-	user = msn_userlist_find_add_user(session->userlist, passport, NULL);
+	if ((display = xmlnode_get_child(member, "DisplayName"))) {
+		display_text = xmlnode_get_data(display);
+	} else {
+		display_text = NULL;
+	}
+
+	user = msn_userlist_find_add_user(session->userlist, passport, display_text);
 
 	for (annotation = xmlnode_get_child(member, "Annotations/Annotation");
 	     annotation;
@@ -409,6 +416,7 @@
 	g_free(type);
 	g_free(member_id);
 	g_free(invite);
+	g_free(display_text);
 }
 
 static void