libpurple/protocols/jabber/google/google_session.c

branch
soc.2013.gobjectification.plugins
changeset 36692
324db2a53c4c
parent 36545
23b59a16c808
parent 34935
686fa55b0deb
child 37163
bdaa6ae19356
--- a/libpurple/protocols/jabber/google/google_session.c	Fri Sep 06 23:02:04 2013 +0530
+++ b/libpurple/protocols/jabber/google/google_session.c	Sat Sep 07 00:11:42 2013 +0530
@@ -61,20 +61,20 @@
 		purple_media_candidate_list_free(session_data->remote_video_candidates);
 
 	if (session->description)
-		xmlnode_free(session->description);
+		purple_xmlnode_free(session->description);
 
 	g_free(session->session_data);
 	g_free(session);
 }
 
-static xmlnode *
+static PurpleXmlNode *
 google_session_create_xmlnode(GoogleSession *session, const char *type)
 {
-	xmlnode *node = xmlnode_new("session");
-	xmlnode_set_namespace(node, NS_GOOGLE_SESSION);
-	xmlnode_set_attrib(node, "id", session->id.id);
-	xmlnode_set_attrib(node, "initiator", session->id.initiator);
-	xmlnode_set_attrib(node, "type", type);
+	PurpleXmlNode *node = purple_xmlnode_new("session");
+	purple_xmlnode_set_namespace(node, NS_GOOGLE_SESSION);
+	purple_xmlnode_set_attrib(node, "id", session->id.id);
+	purple_xmlnode_set_attrib(node, "initiator", session->id.initiator);
+	purple_xmlnode_set_attrib(node, "type", type);
 	return node;
 }
 
@@ -99,8 +99,8 @@
 		gchar *ip, *port, *username, *password;
 		gchar pref[16];
 		PurpleMediaCandidateType type;
-		xmlnode *sess;
-		xmlnode *candidate;
+		PurpleXmlNode *sess;
+		PurpleXmlNode *candidate;
 		guint component_id;
 		transport = PURPLE_MEDIA_CANDIDATE(iter->data);
 		component_id = purple_media_candidate_get_component_id(
@@ -108,10 +108,10 @@
 
 		iq = jabber_iq_new(session->js, JABBER_IQ_SET);
 		sess = google_session_create_xmlnode(session, "candidates");
-		xmlnode_insert_child(iq->node, sess);
-		xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+		purple_xmlnode_insert_child(iq->node, sess);
+		purple_xmlnode_set_attrib(iq->node, "to", session->remote_jid);
 
-		candidate = xmlnode_new("candidate");
+		candidate = purple_xmlnode_new("candidate");
 
 		ip = purple_media_candidate_get_ip(transport);
 		port = g_strdup_printf("%d",
@@ -122,36 +122,36 @@
 		password = purple_media_candidate_get_password(transport);
 		type = purple_media_candidate_get_candidate_type(transport);
 
-		xmlnode_set_attrib(candidate, "address", ip);
-		xmlnode_set_attrib(candidate, "port", port);
-		xmlnode_set_attrib(candidate, "name",
+		purple_xmlnode_set_attrib(candidate, "address", ip);
+		purple_xmlnode_set_attrib(candidate, "port", port);
+		purple_xmlnode_set_attrib(candidate, "name",
 				component_id == PURPLE_MEDIA_COMPONENT_RTP ?
 				video ? "video_rtp" : "rtp" :
 				component_id == PURPLE_MEDIA_COMPONENT_RTCP ?
 				video ? "video_rtcp" : "rtcp" : "none");
-		xmlnode_set_attrib(candidate, "username", username);
+		purple_xmlnode_set_attrib(candidate, "username", username);
 		/*
 		 * As of this writing, Farsight 2 in Google compatibility
 		 * mode doesn't provide a password. The Gmail client
 		 * requires this to be set.
 		 */
-		xmlnode_set_attrib(candidate, "password",
+		purple_xmlnode_set_attrib(candidate, "password",
 				password != NULL ? password : "");
-		xmlnode_set_attrib(candidate, "preference", pref);
-		xmlnode_set_attrib(candidate, "protocol",
+		purple_xmlnode_set_attrib(candidate, "preference", pref);
+		purple_xmlnode_set_attrib(candidate, "protocol",
 				purple_media_candidate_get_protocol(transport)
 				== PURPLE_MEDIA_NETWORK_PROTOCOL_UDP ?
 				"udp" : "tcp");
-		xmlnode_set_attrib(candidate, "type", type ==
+		purple_xmlnode_set_attrib(candidate, "type", type ==
 				PURPLE_MEDIA_CANDIDATE_TYPE_HOST ? "local" :
 						      type ==
 				PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX ? "stun" :
 					       	      type ==
 				PURPLE_MEDIA_CANDIDATE_TYPE_RELAY ? "relay" :
 				NULL);
-		xmlnode_set_attrib(candidate, "generation", "0");
-		xmlnode_set_attrib(candidate, "network", "0");
-		xmlnode_insert_child(sess, candidate);
+		purple_xmlnode_set_attrib(candidate, "generation", "0");
+		purple_xmlnode_set_attrib(candidate, "network", "0");
+		purple_xmlnode_insert_child(sess, candidate);
 
 		g_free(ip);
 		g_free(port);
@@ -177,7 +177,7 @@
 				session->js->user->domain,
 				session->js->user->resource);
 		JabberIq *iq;
-		xmlnode *sess, *desc, *payload;
+		PurpleXmlNode *sess, *desc, *payload;
 		GList *codecs, *iter;
 		gboolean is_initiator = !strcmp(session->id.initiator, me);
 
@@ -190,8 +190,8 @@
 		iq = jabber_iq_new(session->js, JABBER_IQ_SET);
 
 		if (is_initiator) {
-			xmlnode_set_attrib(iq->node, "to", session->remote_jid);
-			xmlnode_set_attrib(iq->node, "from", session->id.initiator);
+			purple_xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+			purple_xmlnode_set_attrib(iq->node, "from", session->id.initiator);
 			sess = google_session_create_xmlnode(session, "initiate");
 		} else {
 			google_session_send_candidates(media,
@@ -200,16 +200,16 @@
 			google_session_send_candidates(media,
 					"google-video", session->remote_jid,
 					session);
-			xmlnode_set_attrib(iq->node, "to", session->remote_jid);
-			xmlnode_set_attrib(iq->node, "from", me);
+			purple_xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+			purple_xmlnode_set_attrib(iq->node, "from", me);
 			sess = google_session_create_xmlnode(session, "accept");
 		}
-		xmlnode_insert_child(iq->node, sess);
-		desc = xmlnode_new_child(sess, "description");
+		purple_xmlnode_insert_child(iq->node, sess);
+		desc = purple_xmlnode_new_child(sess, "description");
 		if (video)
-			xmlnode_set_namespace(desc, NS_GOOGLE_SESSION_VIDEO);
+			purple_xmlnode_set_namespace(desc, NS_GOOGLE_SESSION_VIDEO);
 		else
-			xmlnode_set_namespace(desc, NS_GOOGLE_SESSION_PHONE);
+			purple_xmlnode_set_namespace(desc, NS_GOOGLE_SESSION_PHONE);
 
 		codecs = purple_media_get_codecs(media, "google-video");
 
@@ -219,12 +219,12 @@
 					purple_media_codec_get_id(codec));
 			gchar *encoding_name =
 					purple_media_codec_get_encoding_name(codec);
-			payload = xmlnode_new_child(desc, "payload-type");
-			xmlnode_set_attrib(payload, "id", id);
-			xmlnode_set_attrib(payload, "name", encoding_name);
-			xmlnode_set_attrib(payload, "width", "320");
-			xmlnode_set_attrib(payload, "height", "200");
-			xmlnode_set_attrib(payload, "framerate", "30");
+			payload = purple_xmlnode_new_child(desc, "payload-type");
+			purple_xmlnode_set_attrib(payload, "id", id);
+			purple_xmlnode_set_attrib(payload, "name", encoding_name);
+			purple_xmlnode_set_attrib(payload, "width", "320");
+			purple_xmlnode_set_attrib(payload, "height", "200");
+			purple_xmlnode_set_attrib(payload, "framerate", "30");
 			g_free(encoding_name);
 			g_free(id);
 		}
@@ -240,19 +240,19 @@
 					purple_media_codec_get_encoding_name(codec);
 			gchar *clock_rate = g_strdup_printf("%d",
 					purple_media_codec_get_clock_rate(codec));
-			payload = xmlnode_new_child(desc, "payload-type");
+			payload = purple_xmlnode_new_child(desc, "payload-type");
 			if (video)
-				xmlnode_set_namespace(payload, NS_GOOGLE_SESSION_PHONE);
-			xmlnode_set_attrib(payload, "id", id);
+				purple_xmlnode_set_namespace(payload, NS_GOOGLE_SESSION_PHONE);
+			purple_xmlnode_set_attrib(payload, "id", id);
 			/*
 			 * Hack to make Gmail accept speex as the codec.
 			 * It shouldn't have to be case sensitive.
 			 */
 			if (purple_strequal(encoding_name, "SPEEX"))
-				xmlnode_set_attrib(payload, "name", "speex");
+				purple_xmlnode_set_attrib(payload, "name", "speex");
 			else
-				xmlnode_set_attrib(payload, "name", encoding_name);
-			xmlnode_set_attrib(payload, "clockrate", clock_rate);
+				purple_xmlnode_set_attrib(payload, "name", encoding_name);
+			purple_xmlnode_set_attrib(payload, "clockrate", clock_rate);
 			g_free(clock_rate);
 			g_free(encoding_name);
 			g_free(id);
@@ -295,21 +295,21 @@
 		return;
 
 	if (type == PURPLE_MEDIA_INFO_HANGUP) {
-		xmlnode *sess;
+		PurpleXmlNode *sess;
 		JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
 
-		xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+		purple_xmlnode_set_attrib(iq->node, "to", session->remote_jid);
 		sess = google_session_create_xmlnode(session, "terminate");
-		xmlnode_insert_child(iq->node, sess);
+		purple_xmlnode_insert_child(iq->node, sess);
 
 		jabber_iq_send(iq);
 	} else if (type == PURPLE_MEDIA_INFO_REJECT) {
-		xmlnode *sess;
+		PurpleXmlNode *sess;
 		JabberIq *iq = jabber_iq_new(session->js, JABBER_IQ_SET);
 
-		xmlnode_set_attrib(iq->node, "to", session->remote_jid);
+		purple_xmlnode_set_attrib(iq->node, "to", session->remote_jid);
 		sess = google_session_create_xmlnode(session, "reject");
-		xmlnode_insert_child(iq->node, sess);
+		purple_xmlnode_insert_child(iq->node, sess);
 
 		jabber_iq_send(iq);
 	} else if (type == PURPLE_MEDIA_INFO_ACCEPT && local == TRUE) {
@@ -454,7 +454,7 @@
 	GParameter *params;
 	guint num_params;
 	JabberStream *js = session->js;
-	xmlnode *codec_element;
+	PurpleXmlNode *codec_element;
 	const gchar *xmlns;
 	PurpleMediaCodec *codec;
 	GList *video_codecs = NULL;
@@ -499,7 +499,7 @@
 
 	g_free(params);
 
-	for (codec_element = xmlnode_get_child(session->description, "payload-type");
+	for (codec_element = purple_xmlnode_get_child(session->description, "payload-type");
 	     codec_element; codec_element = codec_element->next) {
 		const char *id, *encoding_name,  *clock_rate;
 		gboolean video;
@@ -507,19 +507,19 @@
 				strcmp(codec_element->name, "payload-type"))
 			continue;
 
-		xmlns = xmlnode_get_namespace(codec_element);
-		encoding_name = xmlnode_get_attrib(codec_element, "name");
-		id = xmlnode_get_attrib(codec_element, "id");
+		xmlns = purple_xmlnode_get_namespace(codec_element);
+		encoding_name = purple_xmlnode_get_attrib(codec_element, "name");
+		id = purple_xmlnode_get_attrib(codec_element, "id");
 
 		if (!session_data->video ||
 				(xmlns && !strcmp(xmlns, NS_GOOGLE_SESSION_PHONE))) {
-			clock_rate = xmlnode_get_attrib(
+			clock_rate = purple_xmlnode_get_attrib(
 					codec_element, "clockrate");
 			video = FALSE;
 		} else {
-			/*width = xmlnode_get_attrib(codec_element, "width");
-			height = xmlnode_get_attrib(codec_element, "height");
-			framerate = xmlnode_get_attrib(
+			/*width = purple_xmlnode_get_attrib(codec_element, "width");
+			height = purple_xmlnode_get_attrib(codec_element, "height");
+			framerate = purple_xmlnode_get_attrib(
 					codec_element, "framerate");*/
 			clock_rate = "90000";
 			video = TRUE;
@@ -550,12 +550,12 @@
 
 	result = jabber_iq_new(js, JABBER_IQ_RESULT);
 	jabber_iq_set_id(result, session->iq_id);
-	xmlnode_set_attrib(result->node, "to", session->remote_jid);
+	purple_xmlnode_set_attrib(result->node, "to", session->remote_jid);
 	jabber_iq_send(result);
 }
 
 static gboolean
-google_session_handle_initiate(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+google_session_handle_initiate(JabberStream *js, GoogleSession *session, PurpleXmlNode *sess, const char *iq_id)
 {
 	const gchar *xmlns;
 	GoogleAVSessionData *session_data =
@@ -566,8 +566,8 @@
 		return FALSE;
 	}
 
-	session->description = xmlnode_copy(xmlnode_get_child(sess, "description"));
-	xmlns = xmlnode_get_namespace(session->description);
+	session->description = purple_xmlnode_copy(purple_xmlnode_get_child(sess, "description"));
+	xmlns = purple_xmlnode_get_namespace(session->description);
 
 	if (purple_strequal(xmlns, NS_GOOGLE_SESSION_PHONE))
 		session_data->video = FALSE;
@@ -611,25 +611,25 @@
 
 
 static void
-google_session_handle_candidates(JabberStream  *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+google_session_handle_candidates(JabberStream  *js, GoogleSession *session, PurpleXmlNode *sess, const char *iq_id)
 {
 	JabberIq *result;
 	GList *list = NULL, *video_list = NULL;
-	xmlnode *cand;
+	PurpleXmlNode *cand;
 	static int name = 0;
 	char n[4];
 	GoogleAVSessionData *session_data =
 		(GoogleAVSessionData *) session->session_data;
 
-	for (cand = xmlnode_get_child(sess, "candidate"); cand;
-			cand = xmlnode_get_next_twin(cand)) {
+	for (cand = purple_xmlnode_get_child(sess, "candidate"); cand;
+			cand = purple_xmlnode_get_next_twin(cand)) {
 		PurpleMediaCandidate *info;
-		const gchar *cname = xmlnode_get_attrib(cand, "name");
-		const gchar *type = xmlnode_get_attrib(cand, "type");
-		const gchar *protocol = xmlnode_get_attrib(cand, "protocol");
-		const gchar *address = xmlnode_get_attrib(cand, "address");
-		const gchar *port = xmlnode_get_attrib(cand, "port");
-		const gchar *preference = xmlnode_get_attrib(cand, "preference");
+		const gchar *cname = purple_xmlnode_get_attrib(cand, "name");
+		const gchar *type = purple_xmlnode_get_attrib(cand, "type");
+		const gchar *protocol = purple_xmlnode_get_attrib(cand, "protocol");
+		const gchar *address = purple_xmlnode_get_attrib(cand, "address");
+		const gchar *port = purple_xmlnode_get_attrib(cand, "port");
+		const gchar *preference = purple_xmlnode_get_attrib(cand, "preference");
 		guint component_id;
 
 		if (cname && type && address && port) {
@@ -660,8 +660,8 @@
 							PURPLE_MEDIA_NETWORK_PROTOCOL_TCP,
 					address,
 					atoi(port));
-			g_object_set(info, "username", xmlnode_get_attrib(cand, "username"),
-					"password", xmlnode_get_attrib(cand, "password"),
+			g_object_set(info, "username", purple_xmlnode_get_attrib(cand, "username"),
+					"password", purple_xmlnode_get_attrib(cand, "password"),
 			        "priority", prio, NULL);
 			if (!strncmp(cname, "video_", 6)) {
 				if (session_data->added_streams) {
@@ -696,19 +696,19 @@
 
 	result = jabber_iq_new(js, JABBER_IQ_RESULT);
 	jabber_iq_set_id(result, iq_id);
-	xmlnode_set_attrib(result->node, "to", session->remote_jid);
+	purple_xmlnode_set_attrib(result->node, "to", session->remote_jid);
 	jabber_iq_send(result);
 }
 
 static void
-google_session_handle_accept(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+google_session_handle_accept(JabberStream *js, GoogleSession *session, PurpleXmlNode *sess, const char *iq_id)
 {
-	xmlnode *desc_element = xmlnode_get_child(sess, "description");
-	xmlnode *codec_element = xmlnode_get_child(
+	PurpleXmlNode *desc_element = purple_xmlnode_get_child(sess, "description");
+	PurpleXmlNode *codec_element = purple_xmlnode_get_child(
 			desc_element, "payload-type");
 	GList *codecs = NULL, *video_codecs = NULL;
 	JabberIq *result = NULL;
-	const gchar *xmlns = xmlnode_get_namespace(desc_element);
+	const gchar *xmlns = purple_xmlnode_get_namespace(desc_element);
 	gboolean video = (xmlns && !strcmp(xmlns, NS_GOOGLE_SESSION_VIDEO));
 	GoogleAVSessionData *session_data =
 		(GoogleAVSessionData *) session->session_data;
@@ -721,18 +721,18 @@
 		if (!purple_strequal(codec_element->name, "payload-type"))
 			continue;
 
-		xmlns = xmlnode_get_namespace(codec_element);
-		encoding_name =	xmlnode_get_attrib(codec_element, "name");
-		id = xmlnode_get_attrib(codec_element, "id");
+		xmlns = purple_xmlnode_get_namespace(codec_element);
+		encoding_name =	purple_xmlnode_get_attrib(codec_element, "name");
+		id = purple_xmlnode_get_attrib(codec_element, "id");
 
 		if (!video || purple_strequal(xmlns, NS_GOOGLE_SESSION_PHONE))
-			clock_rate = xmlnode_get_attrib(
+			clock_rate = purple_xmlnode_get_attrib(
 					codec_element, "clockrate");
 		else {
 			clock_rate = "90000";
-			/*width = xmlnode_get_attrib(codec_element, "width");
-			height = xmlnode_get_attrib(codec_element, "height");
-			framerate = xmlnode_get_attrib(
+			/*width = purple_xmlnode_get_attrib(codec_element, "width");
+			height = purple_xmlnode_get_attrib(codec_element, "height");
+			framerate = purple_xmlnode_get_attrib(
 					codec_element, "framerate");*/
 			video_codec = TRUE;
 		}
@@ -763,12 +763,12 @@
 
 	result = jabber_iq_new(js, JABBER_IQ_RESULT);
 	jabber_iq_set_id(result, iq_id);
-	xmlnode_set_attrib(result->node, "to", session->remote_jid);
+	purple_xmlnode_set_attrib(result->node, "to", session->remote_jid);
 	jabber_iq_send(result);
 }
 
 static void
-google_session_handle_reject(JabberStream *js, GoogleSession *session, xmlnode *sess)
+google_session_handle_reject(JabberStream *js, GoogleSession *session, PurpleXmlNode *sess)
 {
 	GoogleAVSessionData *session_data =
 		(GoogleAVSessionData *) session->session_data;
@@ -776,7 +776,7 @@
 }
 
 static void
-google_session_handle_terminate(JabberStream *js, GoogleSession *session, xmlnode *sess)
+google_session_handle_terminate(JabberStream *js, GoogleSession *session, PurpleXmlNode *sess)
 {
 	GoogleAVSessionData *session_data =
 		(GoogleAVSessionData *) session->session_data;
@@ -784,9 +784,9 @@
 }
 
 static void
-google_session_parse_iq(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id)
+google_session_parse_iq(JabberStream *js, GoogleSession *session, PurpleXmlNode *sess, const char *iq_id)
 {
-	const char *type = xmlnode_get_attrib(sess, "type");
+	const char *type = purple_xmlnode_get_attrib(sess, "type");
 
 	if (!strcmp(type, "initiate")) {
 		google_session_handle_initiate(js, session, sess, iq_id);
@@ -804,23 +804,23 @@
 void
 jabber_google_session_parse(JabberStream *js, const char *from,
                             JabberIqType type, const char *iq_id,
-                            xmlnode *session_node)
+                            PurpleXmlNode *session_node)
 {
 	GoogleSession *session = NULL;
 	GoogleSessionId id;
 
-	xmlnode *desc_node;
+	PurpleXmlNode *desc_node;
 
 	GList *iter = NULL;
 
 	if (type != JABBER_IQ_SET)
 		return;
 
-	id.id = (gchar*)xmlnode_get_attrib(session_node, "id");
+	id.id = (gchar*)purple_xmlnode_get_attrib(session_node, "id");
 	if (!id.id)
 		return;
 
-	id.initiator = (gchar*)xmlnode_get_attrib(session_node, "initiator");
+	id.initiator = (gchar*)purple_xmlnode_get_attrib(session_node, "initiator");
 	if (!id.initiator)
 		return;
 
@@ -845,9 +845,9 @@
 	}
 
 	/* If the session doesn't exist, this has to be an initiate message */
-	if (strcmp(xmlnode_get_attrib(session_node, "type"), "initiate"))
+	if (strcmp(purple_xmlnode_get_attrib(session_node, "type"), "initiate"))
 		return;
-	desc_node = xmlnode_get_child(session_node, "description");
+	desc_node = purple_xmlnode_get_child(session_node, "description");
 	if (!desc_node)
 		return;
 	session = g_new0(GoogleSession, 1);

mercurial