libpurple/protocols/jabber/jingle.c

Sat, 24 May 2008 01:40:34 +0000

author
Michael Ruprecht <maiku@pidgin.im>
date
Sat, 24 May 2008 01:40:34 +0000
branch
soc.2008.vv
changeset 23698
0815965bd80b
parent 23697
299bafcd8eb8
child 23704
9b88c9b23aed
permissions
-rw-r--r--

Moved jingle.c global variable "sessions" into JabberStream.
Allows media sessions between two accounts in the same client.

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

mercurial