Mercurial > pidgin
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; +} +