author | Nicolas Cornu <nicolas.cornu@ensi-bourges.fr> |
Sat, 14 Aug 2010 19:06:27 +0200 | |
changeset 119 | 0b9a7b505079 |
parent 118 | f3408f4fe61a |
child 120 | 3e2085a44a5c |
permissions | -rw-r--r-- |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
1 |
/* |
114
813867884159
add the start of socks5
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
110
diff
changeset
|
2 |
* ibb.c |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
3 |
* |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
4 |
* Copyrigth (C) 2010 Nicolas Cornu <nicolas.cornu@ensi-bourges.fr> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
5 |
* |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
6 |
* This program is free software; you can redistribute it and/or modify |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
7 |
* it under the terms of the GNU General Public License as published by |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
8 |
* the Free Software Foundation; either version 2 of the License, or (at |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
9 |
* your option) any later version. |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
10 |
* |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
11 |
* This program is distributed in the hope that it will be useful, but |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
12 |
* WITHOUT ANY WARRANTY; without even the implied warranty of |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
14 |
* General Public License for more details. |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
15 |
* |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
16 |
* You should have received a copy of the GNU General Public License |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
17 |
* along with this program; if not, write to the Free Software |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
18 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
19 |
* USA |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
20 |
*/ |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
21 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
22 |
#include "config.h" |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
23 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
24 |
#include <glib.h> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
25 |
|
106
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
26 |
#include <mcabber/xmpp.h> |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
27 |
#include <mcabber/modules.h> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
28 |
#include <mcabber/utils.h> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
29 |
#include <mcabber/xmpp_helper.h> |
105
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
30 |
#include <mcabber/logprint.h> |
106
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
31 |
#include <mcabber/hooks.h> |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
32 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
33 |
#include <jingle/jingle.h> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
34 |
#include <jingle/check.h> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
35 |
#include <jingle/register.h> |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
36 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
37 |
#include "ibb.h" |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
38 |
|
50
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
39 |
static LmMessageHandler* jingle_ibb_handler = NULL; |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
40 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
41 |
gconstpointer jingle_ibb_check(JingleContent *cn, GError **err); |
60
05184a1846d1
IBB: Create a Lm with a gconstpointer
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
58
diff
changeset
|
42 |
gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2); |
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
43 |
void jingle_ibb_tomessage(gconstpointer data, LmMessageNode *node); |
73
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
44 |
const gchar* jingle_ibb_xmlns(void); |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
45 |
gconstpointer jingle_ibb_new(void); |
107 | 46 |
void jingle_ibb_send(session_content *sc, const gchar *to, gconstpointer data, gchar *buf, gsize size); |
60
05184a1846d1
IBB: Create a Lm with a gconstpointer
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
58
diff
changeset
|
47 |
|
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
48 |
static void jingle_ibb_init(void); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
49 |
static void jingle_ibb_uninit(void); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
50 |
|
106
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
51 |
static guint connect_hid = 0; |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
52 |
static guint disconn_hid = 0; |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
53 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
54 |
const gchar *deps[] = { "jingle", NULL }; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
55 |
|
84
cdff1771155d
commit without segfault it's better
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
81
diff
changeset
|
56 |
static JingleTransportFuncs funcs = { |
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
57 |
jingle_ibb_xmlns, |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
58 |
jingle_ibb_check, |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
59 |
jingle_ibb_tomessage, |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
60 |
jingle_ibb_cmp, |
105
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
61 |
jingle_ibb_new, |
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
62 |
jingle_ibb_send |
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
63 |
}; |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
64 |
|
58 | 65 |
module_info_t info_jingle_inbandbytestream = { |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
66 |
.branch = MCABBER_BRANCH, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
67 |
.api = MCABBER_API_VERSION, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
68 |
.version = PROJECT_VERSION, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
69 |
.description = "Jingle In Band Bytestream (XEP-0261)\n", |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
70 |
.requires = deps, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
71 |
.init = jingle_ibb_init, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
72 |
.uninit = jingle_ibb_uninit, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
73 |
.next = NULL, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
74 |
}; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
75 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
76 |
|
73
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
77 |
const gchar* jingle_ibb_xmlns(void) |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
78 |
{ |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
79 |
return NS_JINGLE_TRANSPORT_IBB; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
80 |
} |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
81 |
|
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
82 |
gconstpointer jingle_ibb_check(JingleContent *cn, GError **err) |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
83 |
{ |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
84 |
JingleIBB *ibb = NULL; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
85 |
LmMessageNode *node = cn->transport; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
86 |
const gchar *blocksize; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
87 |
|
94
a49f78cada29
Fix bugs. Use directly the JingleSession to determine the recipient.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
89
diff
changeset
|
88 |
ibb = g_new0(JingleIBB, 1); |
a49f78cada29
Fix bugs. Use directly the JingleSession to determine the recipient.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
89
diff
changeset
|
89 |
|
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
90 |
blocksize = lm_message_node_get_attribute(node, "block-size"); |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
118
diff
changeset
|
91 |
ibb->sid = g_strdup(lm_message_node_get_attribute(node, "sid")); |
55
bc0281fee13d
IBB handle jingle when receiving data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
54
diff
changeset
|
92 |
|
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
93 |
if (!ibb->sid || !blocksize) { |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
94 |
g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_MISSING, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
95 |
"an attribute of the transport element is missing"); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
96 |
g_free(ibb); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
97 |
return NULL; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
98 |
} |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
99 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
100 |
ibb->blocksize = g_ascii_strtoll(blocksize, NULL, 10); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
101 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
102 |
// the size attribute is a xs:short an therefore can be negative. |
73
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
103 |
if (ibb->blocksize < 0 || ibb->blocksize > IBB_BLOCK_SIZE_MAX) { |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
104 |
g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_BADVALUE, |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
105 |
"block-size is negative"); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
106 |
g_free(ibb); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
107 |
return NULL; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
108 |
} |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
109 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
110 |
return (gconstpointer) ibb; |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
111 |
} |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
112 |
|
50
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
113 |
LmHandlerResult jingle_ibb_handle_iq(LmMessageHandler *handler, |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
114 |
LmConnection *connection, LmMessage *message, |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
115 |
gpointer user_data) |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
116 |
{ |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
117 |
const gchar *data64; |
105
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
118 |
JingleIBB *jibb = g_new0(JingleIBB, 1); |
55
bc0281fee13d
IBB handle jingle when receiving data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
54
diff
changeset
|
119 |
gsize len; |
bc0281fee13d
IBB handle jingle when receiving data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
54
diff
changeset
|
120 |
guchar *data; |
51
0a13062d0a11
IBB: get infos and message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
50
diff
changeset
|
121 |
|
50
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
122 |
LmMessageSubType iqtype = lm_message_get_sub_type(message); |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
123 |
if (iqtype != LM_MESSAGE_SUB_TYPE_SET) |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
124 |
return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
125 |
|
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
126 |
LmMessageNode *root = lm_message_get_node(message); |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
127 |
LmMessageNode *dnode = lm_message_node_get_child(root, "data"); |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
128 |
|
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
129 |
if (!dnode) // no <data> element found |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
130 |
return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
131 |
|
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
132 |
if (g_strcmp0(lm_message_node_get_attribute(dnode, "xmlns"), |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
133 |
NS_TRANSPORT_IBB)) |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
134 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
135 |
|
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
136 |
jingle_ack_iq(message); |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
137 |
|
105
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
138 |
jibb->sid = lm_message_node_get_attribute(dnode, "sid"); |
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
139 |
jibb->seq = g_ascii_strtoll(lm_message_node_get_attribute(dnode, "seq"), NULL, 10); |
51
0a13062d0a11
IBB: get infos and message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
50
diff
changeset
|
140 |
|
0a13062d0a11
IBB: get infos and message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
50
diff
changeset
|
141 |
data64 = lm_message_node_get_value(dnode); |
0a13062d0a11
IBB: get infos and message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
50
diff
changeset
|
142 |
|
55
bc0281fee13d
IBB handle jingle when receiving data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
54
diff
changeset
|
143 |
data = g_base64_decode(data64, &len); |
51
0a13062d0a11
IBB: get infos and message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
50
diff
changeset
|
144 |
|
105
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
145 |
handle_trans_data(NS_JINGLE_TRANSPORT_IBB, jibb, (const gchar *)data, (guint)len); |
51
0a13062d0a11
IBB: get infos and message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
50
diff
changeset
|
146 |
|
50
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
147 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
148 |
} |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
149 |
|
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
150 |
|
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
151 |
gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2) |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
152 |
{ |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
153 |
const JingleIBB *ibb1 = data1, *ibb2 = data2; |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
154 |
if(g_strcmp0(ibb1->sid, ibb2->sid)) |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
155 |
return FALSE; |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
156 |
return TRUE; |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
157 |
} |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
158 |
|
73
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
159 |
static gchar *new_ibb_sid(void) |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
160 |
{ |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
161 |
gchar *sid; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
162 |
gchar car[] = "azertyuiopqsdfghjklmwxcvbn1234567890AZERTYUIOPQSDFGHJKLMWXCVBN"; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
163 |
int i; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
164 |
sid = g_new0(gchar, 7); |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
165 |
for (i = 0; i < 6; i++) |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
166 |
sid[i] = car[g_random_int_range(0, sizeof(car)/sizeof(car[0]))]; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
167 |
|
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
168 |
sid[6] = '\0'; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
169 |
|
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
170 |
return sid; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
171 |
} |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
172 |
|
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
173 |
gconstpointer jingle_ibb_new(void) |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
174 |
{ |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
175 |
JingleIBB *ibb = g_new0(JingleIBB, 1); |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
176 |
ibb->blocksize = IBB_BLOCK_SIZE_MAX; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
177 |
ibb->sid = new_ibb_sid(); |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
178 |
ibb->seq = 0; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
179 |
|
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
180 |
return ibb; |
6f061c11acfb
Add atrans to a new app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
72
diff
changeset
|
181 |
} |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
182 |
|
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
183 |
int jingle_ibb_check_session(gconstpointer data, gconstpointer session) |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
184 |
{ |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
185 |
const JingleIBB *ibb1 = data, *ibb2 = session; |
110
c0341c164405
JFT: compute the md5 when receiving
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
107
diff
changeset
|
186 |
if(!g_strcmp0(ibb1->sid, ibb2->sid) && ibb1->seq == ibb2->seq + 1) |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
187 |
return 0; |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
188 |
return 1; |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
189 |
} |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
190 |
|
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
191 |
void jingle_ibb_tomessage(gconstpointer data, LmMessageNode *node) |
60
05184a1846d1
IBB: Create a Lm with a gconstpointer
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
58
diff
changeset
|
192 |
{ |
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
193 |
JingleIBB *jibb = (JingleIBB*) data; |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
194 |
gchar *bsize = g_strdup_printf("%i", jibb->blocksize); |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
195 |
if (lm_message_node_get_child(node, "transport") != NULL) |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
196 |
return; |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
197 |
|
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
198 |
LmMessageNode *node2 = lm_message_node_add_child(node, "transport", NULL); |
89
88bb2d0f9ff8
add an namespace to a jingle node
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
84
diff
changeset
|
199 |
|
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
200 |
lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE_TRANSPORT_IBB, |
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
201 |
"sid", jibb->sid, |
89
88bb2d0f9ff8
add an namespace to a jingle node
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
84
diff
changeset
|
202 |
"block-size", bsize, |
88bb2d0f9ff8
add an namespace to a jingle node
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
84
diff
changeset
|
203 |
NULL); |
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
73
diff
changeset
|
204 |
g_free(bsize); |
60
05184a1846d1
IBB: Create a Lm with a gconstpointer
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
58
diff
changeset
|
205 |
} |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
51
diff
changeset
|
206 |
|
107 | 207 |
static void jingle_ibb_handle_ack_iq_send(LmMessage *mess, gpointer data) |
104 | 208 |
{ |
107 | 209 |
// TODO: check the sub type (error ??) |
210 |
handle_trans_next((session_content*)data); |
|
104 | 211 |
} |
212 |
||
107 | 213 |
void jingle_ibb_send(session_content *sc, const gchar *to, gconstpointer data, gchar *buf, gsize size) |
104 | 214 |
{ |
215 |
JingleIBB *jibb = (JingleIBB*)data; |
|
216 |
JingleAckHandle *ackhandle; |
|
118
f3408f4fe61a
JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
114
diff
changeset
|
217 |
LmMessageNode *node; |
106
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
218 |
gchar *base64 = g_base64_encode((const guchar *)buf, size); |
105
c31988e107b3
ibb handle new data
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
104
diff
changeset
|
219 |
gchar *seq = g_strdup_printf("%" G_GINT64_FORMAT, jibb->seq); |
104 | 220 |
|
221 |
LmMessage *r = lm_message_new_with_sub_type(to, LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_SET); |
|
118
f3408f4fe61a
JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
114
diff
changeset
|
222 |
LmMessageNode *node2 = lm_message_get_node(r); |
f3408f4fe61a
JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
114
diff
changeset
|
223 |
node = lm_message_node_add_child(node2, "data", NULL); |
107 | 224 |
lm_message_node_set_attributes(node, "xmlns", NS_TRANSPORT_IBB, |
225 |
"sid", jibb->sid, |
|
226 |
"seq", seq, |
|
227 |
NULL); |
|
104 | 228 |
lm_message_node_set_value(node, base64); |
229 |
||
230 |
ackhandle = g_new0(JingleAckHandle, 1); |
|
231 |
ackhandle->callback = jingle_ibb_handle_ack_iq_send; |
|
107 | 232 |
ackhandle->user_data = (gpointer)sc; |
233 |
||
104 | 234 |
lm_connection_send_with_reply(lconnection, r, |
235 |
jingle_new_ack_handler(ackhandle), NULL); |
|
236 |
lm_message_unref(r); |
|
237 |
||
238 |
// The next packet will be seq++ |
|
239 |
jibb->seq++; |
|
240 |
||
241 |
g_free(base64); |
|
242 |
} |
|
243 |
||
106
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
244 |
static void jingle_ibb_unregister_lm_handlers(void) |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
245 |
{ |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
246 |
if (lconnection) { |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
247 |
lm_connection_unregister_message_handler(lconnection, jingle_ibb_handler, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
248 |
LM_MESSAGE_TYPE_IQ); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
249 |
} |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
250 |
} |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
251 |
|
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
252 |
static void jingle_ibb_register_lm_handlers(void) |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
253 |
{ |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
254 |
jingle_ibb_unregister_lm_handlers(); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
255 |
if (lconnection) { |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
256 |
lm_connection_register_message_handler(lconnection, jingle_ibb_handler, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
257 |
LM_MESSAGE_TYPE_IQ, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
258 |
LM_HANDLER_PRIORITY_FIRST); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
259 |
} |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
260 |
} |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
261 |
|
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
262 |
static guint jingle_ibb_connect_hh(const gchar *hname, hk_arg_t *args, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
263 |
gpointer ignore) |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
264 |
{ |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
265 |
jingle_ibb_register_lm_handlers(); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
266 |
return HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
267 |
} |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
268 |
|
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
269 |
static guint jingle_ibb_disconn_hh(const gchar *hname, hk_arg_t *args, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
270 |
gpointer ignore) |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
271 |
{ |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
272 |
jingle_ibb_unregister_lm_handlers(); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
273 |
return HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
274 |
} |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
275 |
|
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
276 |
static void jingle_ibb_init(void) |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
277 |
{ |
50
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
278 |
jingle_ibb_handler = lm_message_handler_new(jingle_ibb_handle_iq, NULL, NULL); |
106
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
279 |
|
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
280 |
connect_hid = hk_add_handler(jingle_ibb_connect_hh, HOOK_POST_CONNECT, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
281 |
G_PRIORITY_DEFAULT_IDLE, NULL); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
282 |
disconn_hid = hk_add_handler(jingle_ibb_disconn_hh, HOOK_PRE_DISCONNECT, |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
283 |
G_PRIORITY_DEFAULT_IDLE, NULL); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
284 |
jingle_ibb_register_lm_handlers(); |
2942c71f434a
transfer work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
105
diff
changeset
|
285 |
|
63
b56853071a09
Add a new function that find the best transport method for an app.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
286 |
jingle_register_transport(NS_JINGLE_TRANSPORT_IBB, &funcs, |
b56853071a09
Add a new function that find the best transport method for an app.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
287 |
JINGLE_TRANSPORT_STREAMING, |
b56853071a09
Add a new function that find the best transport method for an app.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
288 |
JINGLE_TRANSPORT_LOW); |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
289 |
xmpp_add_feature(NS_JINGLE_TRANSPORT_IBB); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
290 |
} |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
291 |
|
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
292 |
static void jingle_ibb_uninit(void) |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
293 |
{ |
50
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
294 |
lm_message_handler_invalidate(jingle_ibb_handler); |
8b706187362b
handle data for ibb
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
49
diff
changeset
|
295 |
lm_message_handler_unref(jingle_ibb_handler); |
49
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
296 |
xmpp_del_feature(NS_JINGLE_TRANSPORT_IBB); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
297 |
jingle_unregister_transport(NS_JINGLE_TRANSPORT_IBB); |
8dddfbe488b6
Add ibb transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
298 |
} |