diff libpurple/protocols/jabber/jingle/session.c @ 26284:4f47eeaa1414

Add functions for more easily creating session-terminate packets.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Tue, 17 Mar 2009 04:40:25 +0000
parents db517c55c508
children 30cc73d99789 3824cd706fa3
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jingle/session.c	Tue Mar 17 02:48:43 2009 +0000
+++ b/libpurple/protocols/jabber/jingle/session.c	Tue Mar 17 04:40:25 2009 +0000
@@ -590,3 +590,38 @@
 	session->priv->state = TRUE;
 }
 
+JabberIq *
+jingle_session_terminate_packet(JingleSession *session, const gchar *reason)
+{
+	JabberIq *iq = jingle_session_to_packet(session,
+			JINGLE_SESSION_TERMINATE);
+	xmlnode *jingle = xmlnode_get_child(iq->node, "jingle");
+
+	if (reason != NULL) {
+		JabberIq *reason_node;
+		reason_node = xmlnode_new_child(jingle, "reason");
+		xmlnode_new_child(reason_node, reason);
+	}
+	return iq;
+}
+
+JabberIq *
+jingle_session_redirect_packet(JingleSession *session, const gchar *sid)
+{
+	JabberIq *iq = jingle_session_terminate_packet(session,
+			"alternative-session");
+	xmlnode *alt_session;
+
+	if (sid == NULL)
+		return iq;
+
+	alt_session = xmlnode_get_child(iq->node,
+			"jingle/reason/alternative-session");
+
+	if (alt_session != NULL) {
+		xmlnode *sid_node = xmlnode_new_child(alt_session, "sid");
+		xmlnode_insert_data(sid_node, sid, -1);
+	}
+	return iq;
+}
+