libpurple/protocols/msn/notification.c

branch
cpw.qulogic.msnp16
changeset 29445
3ffef687de8a
parent 29434
9c5e5493e625
child 29446
2a1030761e57
--- a/libpurple/protocols/msn/notification.c	Tue Dec 15 01:42:24 2009 +0000
+++ b/libpurple/protocols/msn/notification.c	Tue Dec 15 02:05:32 2009 +0000
@@ -1671,6 +1671,41 @@
 
 		msn_user_set_endpoint_data(user, id, &data);
 	}
+
+	/* Need to shortcut this check, probably... */
+	if (user == user->userlist->session->user) {
+		for (epNode = xmlnode_get_child(payloadNode, "PrivateEndpointData");
+		     epNode;
+		     epNode = xmlnode_get_next_twin(epNode)) {
+			MsnUserEndpoint *ep;
+			xmlnode *nameNode, *clientNode;
+
+			/*	<PrivateEndpointData id='{GUID}'>
+					<EpName>Endpoint Name</EpName>
+					<Idle>true/false</Idle>
+					<ClientType>1</ClientType>
+					<State>NLN</State>
+				</PrivateEndpointData>
+			*/
+			id = xmlnode_get_attrib(epNode, "id");
+			ep = msn_user_get_endpoint_data(user, id);
+
+			if (ep != NULL) {
+				nameNode = xmlnode_get_child(epNode, "EpName");
+				if (nameNode != NULL) {
+					g_free(ep->name);
+					ep->name = xmlnode_get_data(nameNode);
+				}
+
+				clientNode = xmlnode_get_child(epNode, "ClientType");
+				if (clientNode != NULL) {
+					tmp = xmlnode_get_data(clientNode);
+					ep->type = strtoul(tmp, 10, NULL);
+					g_free(tmp);
+				}
+			}
+		}
+	}
 }
 
 /*

mercurial