# HG changeset patch # User Elliott Sales de Andrade # Date 1228108899 0 # Node ID f1936abe1616fe29d9d18b65bd3565c543fe4361 # Parent e88f30b437ad2dc74e3a9f2307ef53af7f038a2c Get the MSN buddy's network ID from the FindMembership response. References #6755. diff -r e88f30b437ad -r f1936abe1616 libpurple/protocols/msn/contact.c --- a/libpurple/protocols/msn/contact.c Fri Nov 28 05:11:52 2008 +0000 +++ b/libpurple/protocols/msn/contact.c Mon Dec 01 05:21:39 2008 +0000 @@ -223,9 +223,26 @@ char *type = xmlnode_get_data(xmlnode_get_child(member, "Type")); char *member_id = xmlnode_get_data(xmlnode_get_child(member, "MembershipId")); MsnUser *user = msn_userlist_find_add_user(session->userlist, passport, NULL); + xmlnode *annotation; + guint nid = MSN_NETWORK_PASSPORT; - purple_debug_info("msn", "CL: %s name: %s, Type: %s, MembershipID: %s\n", - node, passport, type, member_id == NULL ? "(null)" : member_id); + for (annotation = xmlnode_get_child(member, "Annotations/Annotation"); + annotation; + annotation = xmlnode_get_next_twin(annotation)) { + char *name = xmlnode_get_data(xmlnode_get_child(annotation, "Name")); + if (name && !strcmp(name, "MSN.IM.BuddyType")) { + char *value = xmlnode_get_data(xmlnode_get_child(annotation, "Value")); + if (value != NULL) + nid = strtoul(value, NULL, 10); + g_free(value); + } + g_free(name); + } + + purple_debug_info("msn", "CL: %s name: %s, Type: %s, MembershipID: %s, NetworkID: %u\n", + node, passport, type, member_id == NULL ? "(null)" : member_id, nid); + + msn_user_set_network(user, nid); if (member_id) { user->membership_id[list] = atoi(member_id);