annotate libpurple/protocols/jabber/jingle.c @ 25647:e1c8ec1259de

Updates voice and video to use Farsight 2, gets XMPP voice conferences closer to XEP-0167, and fixes a lot of bugs.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 23 May 2008 02:42:32 +0000
parents 9f36ed35615e
children 16543025aed1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1 /*
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
2 * purple - Jabber Protocol Plugin
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
3 *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
7 * (at your option) any later version.
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
8 *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
12 * GNU General Public License for more details.
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
13 *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
15 * along with this program; if not, write to the Free Software
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
17 *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
18 */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
19
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
20 #include "config.h"
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
21 #include "purple.h"
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
22 #include "jingle.h"
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
23 #include "xmlnode.h"
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
24
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
25 #include <stdlib.h>
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
26 #include <string.h>
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
27 #include <glib.h>
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
28
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
29 #ifdef USE_FARSIGHT
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
30
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
31 #include <gst/farsight/fs-candidate.h>
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
32
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
33 /* keep a hash table of JingleSessions */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
34 static GHashTable *sessions = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 static gboolean
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37 jabber_jingle_session_equal(gconstpointer a, gconstpointer b)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
38 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
39 purple_debug_info("jingle",
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40 "jabber_jingle_session_equal, comparing %s and %s\n",
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
41 ((JingleSession *)a)->id,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
42 ((JingleSession *)b)->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
43 return !strcmp(((JingleSession *) a)->id, ((JingleSession *) b)->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
45
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
46 static JingleSession *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47 jabber_jingle_session_create_internal(JabberStream *js,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48 const char *id)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
49 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50 JingleSession *sess = g_new0(JingleSession, 1);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
51 sess->js = js;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
52
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 if (id) {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
54 sess->id = g_strdup(id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
55 } else if (js) {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
56 /* init the session ID... */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57 sess->id = jabber_get_next_id(js);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
58 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
59
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
60 /* insert it into the hash table */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
61 if (!sessions) {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
62 purple_debug_info("jingle", "Creating hash table for sessions\n");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
63 sessions = g_hash_table_new(g_str_hash, g_str_equal);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
64 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
65 purple_debug_info("jingle", "inserting session with key: %s into table\n",
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
66 sess->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
67 g_hash_table_insert(sessions, sess->id, sess);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
68
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
69 sess->session_started = FALSE;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
70
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
71 return sess;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
72 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
73
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
74 JabberStream *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
75 jabber_jingle_session_get_js(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
76 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
77 return sess->js;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
78 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
79
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
80 JingleSession *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
81 jabber_jingle_session_create(JabberStream *js)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
82 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
83 JingleSession *sess = jabber_jingle_session_create_internal(js, NULL);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
84 sess->is_initiator = TRUE;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
85 return sess;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
86 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
87
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
88 JingleSession *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
89 jabber_jingle_session_create_by_id(JabberStream *js, const char *id)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
90 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
91 JingleSession *sess = jabber_jingle_session_create_internal(js, id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
92 sess->is_initiator = FALSE;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
93 return sess;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
94 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
95
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
96 const char *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
97 jabber_jingle_session_get_id(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
98 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
99 return sess->id;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
100 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
101
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
102 void
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
103 jabber_jingle_session_destroy(JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
104 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
105 g_hash_table_remove(sessions, sess->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
106 g_free(sess->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
107 g_free(sess);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
108 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
109
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
110 JingleSession *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
111 jabber_jingle_session_find_by_id(const char *id)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
112 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
113 purple_debug_info("jingle", "find_by_id %s\n", id);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
114 purple_debug_info("jingle", "hash table: %p\n", sessions);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
115 purple_debug_info("jingle", "hash table size %d\n",
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
116 g_hash_table_size(sessions));
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
117 purple_debug_info("jingle", "lookup: %p\n", g_hash_table_lookup(sessions, id));
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
118 return (JingleSession *) g_hash_table_lookup(sessions, id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
119 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
120
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
121 GList *
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
122 jabber_jingle_session_find_by_js(JabberStream *js)
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
123 {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
124 GList *values = g_hash_table_get_values(sessions);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
125 GList *iter = values;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
126 GList *found = NULL;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
127
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
128 for (; iter; iter = iter->next) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
129 JingleSession *session = (JingleSession *)iter->data;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
130 if (session->js == js) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
131 found = g_list_prepend(found, session);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
132 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
133 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
134
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
135 g_list_free(values);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
136 return found;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
137 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
138
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
139 JingleSession *jabber_jingle_session_find_by_jid(JabberStream *js, const char *jid)
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
140 {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
141 GList *values = g_hash_table_get_values(sessions);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
142 GList *iter = values;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
143
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
144 for (; iter; iter = iter->next) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
145 JingleSession *session = (JingleSession *)iter->data;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
146 if (session->js == js && !strcmp(jid, session->remote_jid)) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
147 g_list_free(values);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
148 return session;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
149 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
150 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
151
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
152 g_list_free(values);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
153 return NULL;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
154 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
155
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
156 GList *
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
157 jabber_jingle_get_codecs(const xmlnode *description)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
158 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
159 GList *codecs = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
160 xmlnode *codec_element = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
161 const char *encoding_name,*id, *clock_rate;
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
162 FsCodec *codec;
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
163
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
164 for (codec_element = xmlnode_get_child(description, "payload-type") ;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
165 codec_element ;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
166 codec_element = xmlnode_get_next_twin(codec_element)) {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
167 encoding_name = xmlnode_get_attrib(codec_element, "name");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
168 id = xmlnode_get_attrib(codec_element, "id");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
169 clock_rate = xmlnode_get_attrib(codec_element, "clockrate");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
170
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
171 codec = fs_codec_new(atoi(id), encoding_name,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
172 FS_MEDIA_TYPE_AUDIO,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
173 clock_rate ? atoi(clock_rate) : 0);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
174 codecs = g_list_append(codecs, codec);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
175 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
176 return codecs;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
177 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
178
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
179 GList *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
180 jabber_jingle_get_candidates(const xmlnode *transport)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
181 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
182 GList *candidates = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
183 xmlnode *candidate = NULL;
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
184 FsCandidate *c;
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
185
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
186 for (candidate = xmlnode_get_child(transport, "candidate") ;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
187 candidate ;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
188 candidate = xmlnode_get_next_twin(candidate)) {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
189 const char *type = xmlnode_get_attrib(candidate, "type");
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
190 c = fs_candidate_new(xmlnode_get_attrib(candidate, "component"),
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
191 atoi(xmlnode_get_attrib(candidate, "component")),
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
192 strcmp(type, "host") == 0 ?
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
193 FS_CANDIDATE_TYPE_HOST :
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
194 strcmp(type, "prflx") == 0 ?
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
195 FS_CANDIDATE_TYPE_PRFLX :
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
196 FS_CANDIDATE_TYPE_RELAY,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
197 strcmp(xmlnode_get_attrib(candidate, "protocol"),
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
198 "udp") == 0 ?
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
199 FS_NETWORK_PROTOCOL_UDP :
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
200 FS_NETWORK_PROTOCOL_TCP,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
201 xmlnode_get_attrib(candidate, "ip"),
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
202 atoi(xmlnode_get_attrib(candidate, "port")));
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
203 candidates = g_list_append(candidates, c);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
204 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
205
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
206 return candidates;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
207 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
208
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
209 PurpleMedia *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
210 jabber_jingle_session_get_media(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
211 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
212 return sess->media;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
213 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
214
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
215 void
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
216 jabber_jingle_session_set_media(JingleSession *sess, PurpleMedia *media)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
217 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
218 sess->media = media;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
219 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
220
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
221 const char *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
222 jabber_jingle_session_get_remote_jid(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
223 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
224 return sess->remote_jid;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
225 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
226
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
227 void
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
228 jabber_jingle_session_set_remote_jid(JingleSession *sess,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
229 const char *remote_jid)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
230 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
231 sess->remote_jid = strdup(remote_jid);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
232 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
233
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
234 const char *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
235 jabber_jingle_session_get_initiator(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
236 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
237 return sess->initiator;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
238 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
239
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
240 void
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
241 jabber_jingle_session_set_initiator(JingleSession *sess,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
242 const char *initiator)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
243 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
244 sess->initiator = g_strdup(initiator);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
245 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
246
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
247 gboolean
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
248 jabber_jingle_session_is_initiator(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
249 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
250 return sess->is_initiator;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
251 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
252
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
253 static xmlnode *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
254 jabber_jingle_session_create_jingle_element(const JingleSession *sess,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
255 const char *action)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
256 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
257 xmlnode *jingle = xmlnode_new("jingle");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
258 xmlnode_set_namespace(jingle, "urn:xmpp:tmp:jingle");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
259 xmlnode_set_attrib(jingle, "action", action);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
260 xmlnode_set_attrib(jingle, "initiator",
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
261 jabber_jingle_session_get_initiator(sess));
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
262 xmlnode_set_attrib(jingle, "responder",
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
263 jabber_jingle_session_is_initiator(sess) ?
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
264 jabber_jingle_session_get_remote_jid(sess) :
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
265 jabber_jingle_session_get_initiator(sess));
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
266 xmlnode_set_attrib(jingle, "sid", sess->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
267
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
268 return jingle;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
269 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
270
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
271 xmlnode *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
272 jabber_jingle_session_create_terminate(const JingleSession *sess,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
273 const char *reasoncode,
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
274 const char *reasontext)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
275 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
276 xmlnode *jingle =
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
277 jabber_jingle_session_create_jingle_element(sess, "session-terminate");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
278 xmlnode_set_attrib(jingle, "resoncode", reasoncode);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
279 if (reasontext) {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
280 xmlnode_set_attrib(jingle, "reasontext", reasontext);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
281 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
282 xmlnode_set_attrib(jingle, "sid", sess->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
283
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
284 return jingle;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
285 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
286
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
287 xmlnode *
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
288 jabber_jingle_session_create_description(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
289 {
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
290 GList *codecs = purple_media_get_local_audio_codecs(sess->media);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
291 xmlnode *description = xmlnode_new("description");
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
292
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
293 xmlnode_set_namespace(description, "urn:xmpp:tmp:jingle:apps:audio-rtp");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
294
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
295 /* get codecs */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
296 for (; codecs ; codecs = codecs->next) {
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
297 FsCodec *codec = (FsCodec*)codecs->data;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
298 char id[8], clockrate[10], channels[10];
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
299 xmlnode *payload = xmlnode_new_child(description, "payload-type");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
300
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
301 g_snprintf(id, sizeof(id), "%d", codec->id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
302 g_snprintf(clockrate, sizeof(clockrate), "%d", codec->clock_rate);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
303 g_snprintf(channels, sizeof(channels), "%d", codec->channels);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
304
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
305 xmlnode_set_attrib(payload, "name", codec->encoding_name);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
306 xmlnode_set_attrib(payload, "id", id);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
307 xmlnode_set_attrib(payload, "clockrate", clockrate);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
308 xmlnode_set_attrib(payload, "channels", channels);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
309 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
310
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
311 fs_codec_list_destroy(codecs);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
312 return description;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
313 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
314
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
315 static guint
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
316 jabber_jingle_get_priority(guint type, guint network)
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
317 {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
318 switch (type) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
319 case FS_CANDIDATE_TYPE_HOST:
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
320 return network == 0 ? 4096 : network == 1 ? 2048 : 1024;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
321 break;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
322 case FS_CANDIDATE_TYPE_PRFLX:
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
323 return 126;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
324 break;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
325 case FS_CANDIDATE_TYPE_RELAY:
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
326 return 100;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
327 break;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
328 default:
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
329 return 0; /* unknown type, should not happen */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
330 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
331 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
332
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
333 static xmlnode *
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
334 jabber_jingle_session_create_candidate_info(FsCandidate *c, FsCandidate *remote)
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
335 {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
336 char port[8];
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
337 char prio[8];
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
338 char component[8];
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
339 xmlnode *candidate = NULL;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
340
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
341 candidate = xmlnode_new("candidate");
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
342
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
343 g_snprintf(port, sizeof(port), "%d", c->port);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
344 g_snprintf(prio, sizeof(prio), "%d",
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
345 jabber_jingle_get_priority(c->type, 0));
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
346 g_snprintf(component, sizeof(component), "%d", c->component_id);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
347
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
348 xmlnode_set_attrib(candidate, "component", component);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
349 xmlnode_set_attrib(candidate, "foundation", "1"); /* what about this? */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
350 xmlnode_set_attrib(candidate, "generation", "0"); /* ? */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
351 xmlnode_set_attrib(candidate, "ip", c->ip);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
352 xmlnode_set_attrib(candidate, "network", "0"); /* ? */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
353 xmlnode_set_attrib(candidate, "port", port);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
354 xmlnode_set_attrib(candidate, "priority", prio); /* Is this correct? */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
355 xmlnode_set_attrib(candidate, "protocol",
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
356 c->proto == FS_NETWORK_PROTOCOL_UDP ?
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
357 "udp" : "tcp");
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
358 if (c->username)
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
359 xmlnode_set_attrib(candidate, "ufrag", c->username);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
360 if (c->password)
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
361 xmlnode_set_attrib(candidate, "pwd", c->password);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
362
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
363 xmlnode_set_attrib(candidate, "type",
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
364 c->type == FS_CANDIDATE_TYPE_HOST ?
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
365 "host" :
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
366 c->type == FS_CANDIDATE_TYPE_PRFLX ?
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
367 "prflx" :
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
368 c->type == FS_CANDIDATE_TYPE_RELAY ?
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
369 "relay" : NULL);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
370
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
371 /* relay */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
372 if (c->type == FS_CANDIDATE_TYPE_RELAY) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
373 /* set rel-addr and rel-port? How? */
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
374 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
375
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
376 if (remote) {
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
377 char remote_port[8];
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
378 g_snprintf(remote_port, sizeof(remote_port), "%d", remote->port);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
379 xmlnode_set_attrib(candidate, "rem-addr", remote->ip);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
380 xmlnode_set_attrib(candidate, "rem-port", remote_port);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
381 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
382
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
383 return candidate;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
384 }
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
385
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
386 /* split into two separate methods, one to generate session-accept
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
387 (includes codecs) and one to generate transport-info (includes transports
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
388 candidates) */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
389 xmlnode *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
390 jabber_jingle_session_create_session_accept(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
391 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
392 xmlnode *jingle =
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
393 jabber_jingle_session_create_jingle_element(sess, "session-accept");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
394 xmlnode *content = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
395 xmlnode *description = NULL;
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
396 xmlnode *transport = NULL;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
397 xmlnode *candidate = NULL;
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
398
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
399
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
400 content = xmlnode_new_child(jingle, "content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
401 xmlnode_set_attrib(content, "creator", "initiator");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
402 xmlnode_set_attrib(content, "name", "audio-content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
403 xmlnode_set_attrib(content, "profile", "RTP/AVP");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
404
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
405 description = jabber_jingle_session_create_description(sess);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
406 xmlnode_insert_child(content, description);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
407
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
408 transport = xmlnode_new_child(content, "transport");
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
409 xmlnode_set_namespace(transport, "urn:xmpp:tmp:jingle:transports:ice-udp");
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
410 candidate = jabber_jingle_session_create_candidate_info(
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
411 purple_media_get_local_candidate(sess->media),
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
412 purple_media_get_remote_candidate(sess->media));
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
413 xmlnode_insert_child(transport, candidate);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
414
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
415 return jingle;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
416 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
417
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
418
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
419 xmlnode *
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
420 jabber_jingle_session_create_transport_info(const JingleSession *sess)
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
421 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
422 xmlnode *jingle =
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
423 jabber_jingle_session_create_jingle_element(sess, "transport-info");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
424 xmlnode *content = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
425 xmlnode *transport = NULL;
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
426 GList *candidates = purple_media_get_local_audio_candidates(sess->media);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
427
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
428 content = xmlnode_new_child(jingle, "content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
429 xmlnode_set_attrib(content, "creator", "initiator");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
430 xmlnode_set_attrib(content, "name", "audio-content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
431 xmlnode_set_attrib(content, "profile", "RTP/AVP");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
432
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
433 transport = xmlnode_new_child(content, "transport");
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
434 xmlnode_set_namespace(transport, "urn:xmpp:tmp:jingle:transports:ice-udp");
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
435
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
436 /* get transport candidate */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
437 for (; candidates ; candidates = candidates->next) {
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
438 FsCandidate *c = (FsCandidate *) candidates->data;
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
439
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
440 if (!strcmp(c->ip, "127.0.0.1")) {
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
441 continue;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
442 }
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
443
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
444 xmlnode_insert_child(transport,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
445 jabber_jingle_session_create_candidate_info(c, NULL));
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
446 }
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
447 fs_candidate_list_destroy(candidates);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
448
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
449 return jingle;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
450 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
451
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
452 xmlnode *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
453 jabber_jingle_session_create_content_replace(const JingleSession *sess,
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
454 FsCandidate *native_candidate,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
455 FsCandidate *remote_candidate)
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
456 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
457 xmlnode *jingle =
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
458 jabber_jingle_session_create_jingle_element(sess, "content-replace");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
459 xmlnode *content = NULL;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
460 xmlnode *transport = NULL;
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
461
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
462 purple_debug_info("jingle", "creating content-modify for native candidate %s " \
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
463 ", remote candidate %s\n", native_candidate->candidate_id,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
464 remote_candidate->candidate_id);
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
465
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
466 content = xmlnode_new_child(jingle, "content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
467 xmlnode_set_attrib(content, "creator", "initiator");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
468 xmlnode_set_attrib(content, "name", "audio-content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
469 xmlnode_set_attrib(content, "profile", "RTP/AVP");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
470
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
471 /* get top codec from codec_intersection to put here... */
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
472 /* later on this should probably handle changing codec */
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
473
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
474 xmlnode_insert_child(content, jabber_jingle_session_create_description(sess));
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
475
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
476 transport = xmlnode_new_child(content, "transport");
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
477 xmlnode_set_namespace(transport, "urn:xmpp:tmp:jingle:transports:ice-udp");
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
478 xmlnode_insert_child(transport,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
479 jabber_jingle_session_create_candidate_info(native_candidate,
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
480 remote_candidate));
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
481
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
482 purple_debug_info("jingle", "End create content modify\n");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
483
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
484 return jingle;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
485 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
486
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
487 xmlnode *
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
488 jabber_jingle_session_create_content_accept(const JingleSession *sess)
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
489 {
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
490 xmlnode *jingle =
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
491 jabber_jingle_session_create_jingle_element(sess, "content-accept");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
492
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
493 xmlnode *content = xmlnode_new_child(jingle, "content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
494 xmlnode *description = jabber_jingle_session_create_description(sess);
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
495
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
496 xmlnode_set_attrib(content, "creator", "initiator");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
497 xmlnode_set_attrib(content, "name", "audio-content");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
498 xmlnode_set_attrib(content, "profile", "RTP/AVP");
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
499
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25638
diff changeset
500 xmlnode_insert_child(content, description);
25638
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
501
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
502 return jingle;
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
503 }
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
504
9f36ed35615e Add the new jingle.c/h files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
505 #endif /* USE_FARSIGHT */