author | Nicolas Cornu <nicolas.cornu@ensi-bourges.fr> |
Sun, 03 Oct 2010 22:01:59 +0200 | |
changeset 169 | 9aee866bdb9a |
parent 166 | c42c167a2a5c |
child 172 | d33526eba590 |
permissions | -rw-r--r-- |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
1 |
/* |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
2 |
* jingle.c |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
3 |
* |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
4 |
* Copyrigth (C) 2010 Nicolas Cornu <nicolas.cornu@ensi-bourges.fr> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
5 |
* |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
6 |
* This program is free software; you can redistribute it and/or modify |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
7 |
* it under the terms of the GNU General Public License as published by |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
8 |
* the Free Software Foundation; either version 2 of the License, or (at |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
9 |
* your option) any later version. |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
10 |
* |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
11 |
* This program is distributed in the hope that it will be useful, but |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
12 |
* WITHOUT ANY WARRANTY; without even the implied warranty of |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
14 |
* General Public License for more details. |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
15 |
* |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
16 |
* You should have received a copy of the GNU General Public License |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
17 |
* along with this program; if not, write to the Free Software |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
18 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
19 |
* USA |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
20 |
*/ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
21 |
|
23
9367e144e626
Some errors in code
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
22
diff
changeset
|
22 |
#include <config.h> |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
23 |
|
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
24 |
#include <glib.h> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
25 |
#include <loudmouth/loudmouth.h> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
26 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
27 |
#include <mcabber/xmpp.h> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
28 |
#include <mcabber/hooks.h> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
29 |
#include <mcabber/modules.h> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
30 |
#include <mcabber/logprint.h> |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
31 |
#include <mcabber/xmpp_helper.h> |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
32 |
#include <mcabber/events.h> |
159
1df5f5e3f1e7
Fix the segfault when quitting in IBB and various other bugs.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
152
diff
changeset
|
33 |
#include <mcabber/caps.h> |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
34 |
|
18
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
35 |
#include <jingle/jingle.h> |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
36 |
#include <jingle/check.h> |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
37 |
#include <jingle/action-handlers.h> |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
38 |
#include <jingle/register.h> |
46
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
39 |
#include <jingle/send.h> |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
40 |
#include <jingle/sessions.h> |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
41 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
42 |
static void jingle_register_lm_handlers(void); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
43 |
static void jingle_unregister_lm_handlers(void); |
46
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
44 |
static guint jingle_connect_hh(const gchar *hname, hk_arg_t *args, |
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
45 |
gpointer ignore); |
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
46 |
static guint jingle_disconn_hh(const gchar *hname, hk_arg_t *args, |
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
47 |
gpointer ignore); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
48 |
static void jingle_init(void); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
49 |
static void jingle_uninit(void); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
50 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
51 |
static LmMessageHandler* jingle_iq_handler = NULL; |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
52 |
static GSList *ack_handlers = NULL; |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
53 |
static guint ack_timeout_checker = 0; |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
54 |
static guint connect_hid = 0; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
55 |
static guint disconn_hid = 0; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
56 |
|
72
277778138b4b
Handle for the app
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
70
diff
changeset
|
57 |
|
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
58 |
/** |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
59 |
* Must be aligned with the values in JingleAction |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
60 |
* for easy acces. |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
61 |
*/ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
62 |
struct JingleActionList jingle_action_list[] = { |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
63 |
{ NULL, NULL }, // for JINGLE_UNKNOWN_ACTION |
121
3a3c0e16ea00
Delete some part which wasn't use
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
119
diff
changeset
|
64 |
{ "content-accept", NULL }, |
3a3c0e16ea00
Delete some part which wasn't use
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
119
diff
changeset
|
65 |
{ "content-add", NULL }, |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
66 |
{ "content-modify", NULL }, |
121
3a3c0e16ea00
Delete some part which wasn't use
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
119
diff
changeset
|
67 |
{ "content-reject", NULL }, |
3a3c0e16ea00
Delete some part which wasn't use
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
119
diff
changeset
|
68 |
{ "content-remove", NULL }, |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
69 |
{ "description-info", NULL }, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
70 |
{ "security-info", NULL }, |
99 | 71 |
{ "session-accept", handle_session_accept }, |
111
76ce876f7935
Handle incoming session-info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
107
diff
changeset
|
72 |
{ "session-info", handle_session_info }, |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
73 |
{ "session-initiate", handle_session_initiate }, |
17
24aa7414bafd
Start the transport/app registering code. Fix various things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
16
diff
changeset
|
74 |
{ "session-terminate", handle_session_terminate }, |
99 | 75 |
{ "transport-accept", NULL }, |
165
763c26abd99d
Handle incoming transport-info messages
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
161
diff
changeset
|
76 |
{ "transport-info", handle_transport_info }, |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
77 |
{ "transport-reject", NULL }, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
78 |
{ "transport-replace", NULL }, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
79 |
}; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
80 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
81 |
module_info_t info_jingle = { |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
82 |
.branch = MCABBER_BRANCH, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
83 |
.api = MCABBER_API_VERSION, |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
84 |
.version = PROJECT_VERSION, |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
85 |
.description = "Main Jingle module," |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
86 |
" required for file transport, voip...\n", |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
87 |
.requires = NULL, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
88 |
.init = jingle_init, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
89 |
.uninit = jingle_uninit, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
90 |
.next = NULL, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
91 |
}; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
92 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
93 |
|
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
94 |
/** |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
95 |
* @brief Handle all incoming IQs containing a <jingle> node |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
96 |
*/ |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
97 |
LmHandlerResult jingle_handle_iq(LmMessageHandler *handler, |
26
af14f8f5a2b6
send session terminated
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
25
diff
changeset
|
98 |
LmConnection *connection, LmMessage *message, |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
99 |
gpointer user_data) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
100 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
101 |
LmMessageSubType iqtype = lm_message_get_sub_type(message); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
102 |
if (iqtype != LM_MESSAGE_SUB_TYPE_SET) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
103 |
return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
104 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
105 |
JingleNode *jn = g_new0(JingleNode, 1); |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
106 |
GError *error = NULL; |
16
cb085682970f
Fix a few errors in the code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
15
diff
changeset
|
107 |
LmMessageNode *root = lm_message_get_node(message); |
cb085682970f
Fix a few errors in the code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
15
diff
changeset
|
108 |
LmMessageNode *jnode = lm_message_node_get_child(root, "jingle"); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
109 |
|
16
cb085682970f
Fix a few errors in the code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
15
diff
changeset
|
110 |
if (!jnode) // no <jingle> element found |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
111 |
return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
112 |
|
16
cb085682970f
Fix a few errors in the code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
15
diff
changeset
|
113 |
if (g_strcmp0(lm_message_node_get_attribute(jnode, "xmlns"), NS_JINGLE)) { |
46
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
114 |
scr_log_print(LPRINT_DEBUG, |
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
115 |
"jingle: Received a jingle IQ with an invalid namespace"); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
116 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
117 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
118 |
|
18
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
119 |
check_jingle(message, jnode, jn, &error); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
120 |
if (error != NULL) { |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
121 |
if (error->domain == JINGLE_CHECK_ERROR) { |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
122 |
// request malformed, we reply with a bad-request |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
123 |
jingle_send_iq_error(message, "cancel", "bad-request", NULL); |
57
23df37238a3a
Print more debug output
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
54
diff
changeset
|
124 |
scr_log_print(LPRINT_DEBUG, |
91
7d3e75eec29e
handle error for session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
89
diff
changeset
|
125 |
"jingle: %s", error->message); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
126 |
} |
126
059a6737f6a4
Error are better handle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
123
diff
changeset
|
127 |
g_error_free(error); |
059a6737f6a4
Error are better handle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
123
diff
changeset
|
128 |
jingle_free_jinglenode(jn); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
129 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
130 |
} |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
131 |
|
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
132 |
scr_log_print(LPRINT_DEBUG, "jingle: Received a valid jingle IQ"); |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
133 |
|
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
134 |
if (jingle_action_list[jn->action].handler == NULL) { |
17
24aa7414bafd
Start the transport/app registering code. Fix various things.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
16
diff
changeset
|
135 |
jingle_send_iq_error(message, "cancel", "feature-not-implemented", NULL); |
126
059a6737f6a4
Error are better handle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
123
diff
changeset
|
136 |
jingle_free_jinglenode(jn); |
15
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
137 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
138 |
} |
61ffa66f8288
Include config.h. The file transfert module now add the corresponding
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
14
diff
changeset
|
139 |
|
45
c007e112dd54
Delete LmMessage * in handlers
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
44
diff
changeset
|
140 |
jingle_action_list[jn->action].handler(jn); |
126
059a6737f6a4
Error are better handle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
123
diff
changeset
|
141 |
jingle_free_jinglenode(jn); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
142 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
143 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
144 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
145 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
146 |
* @brief Handle incoming ack iq (type result or error). |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
147 |
*/ |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
148 |
LmHandlerResult jingle_handle_ack_iq(LmMessageHandler *handler, |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
149 |
LmConnection *connection, |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
150 |
LmMessage *message, gpointer user_data) |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
151 |
{ |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
152 |
// TODO: check subtype |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
153 |
if (user_data != NULL) { |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
154 |
JingleAckHandle *ah = user_data; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
155 |
if(ah->callback != NULL) |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
156 |
ah->callback(JINGLE_ACK_RESPONSE, message, ah->user_data); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
157 |
|
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
158 |
jingle_ack_handler_free(ah); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
159 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
160 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
161 |
return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
162 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
163 |
|
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
164 |
gboolean jingle_ack_timeout_checker(gpointer user_data) |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
165 |
{ |
135
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
166 |
GSList *el, *prev; |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
167 |
time_t now = time(NULL); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
168 |
|
139
459b2503c1a3
Rename some stuff, create a README file, enable warnings in ./jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
135
diff
changeset
|
169 |
el = prev = ack_handlers; |
135
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
170 |
while(el) { |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
171 |
JingleAckHandle *ah = el->data; |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
172 |
|
135
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
173 |
if (ah->timeout != 0 && ah->_inserted + ah->timeout <= now) { |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
174 |
if (ah->callback != NULL) { |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
175 |
ah->callback(JINGLE_ACK_TIMEOUT, NULL, ah->user_data); |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
176 |
} |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
177 |
|
135
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
178 |
jingle_ack_handler_free(ah); |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
179 |
if (ack_handlers == NULL) |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
180 |
break; |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
181 |
|
135
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
182 |
el = prev; |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
183 |
} |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
184 |
prev = el; |
06b7c6f1c05c
Fix jingle_ack_timeout_checker.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
133
diff
changeset
|
185 |
el = el->next; |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
186 |
} |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
187 |
return TRUE; |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
188 |
} |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
189 |
|
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
190 |
/** |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
191 |
* @param ah A JingleAckHandle struct |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
192 |
* @return The LmMessageHandler to use when sending a message |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
193 |
* with lm_connection_send_with_reply |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
194 |
* |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
195 |
* jingle_new_ack_handler allow to easily create new LmMessageHandler to |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
196 |
* be called back when a message we sent was acknowledged by its recipient. |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
197 |
*/ |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
198 |
LmMessageHandler *jingle_new_ack_handler(JingleAckHandle *ah) |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
199 |
{ |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
200 |
if(ack_timeout_checker == 0) |
166
c42c167a2a5c
Rename socks5.c to s5b.c, remove remaining tabulation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
165
diff
changeset
|
201 |
ack_timeout_checker = g_timeout_add_seconds(3, jingle_ack_timeout_checker, NULL); |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
202 |
|
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
203 |
ah->_inserted = time(NULL); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
204 |
ah->_handler = lm_message_handler_new(jingle_handle_ack_iq, |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
205 |
(gpointer) ah, NULL); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
206 |
ack_handlers = g_slist_append(ack_handlers, ah); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
207 |
return ah->_handler; |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
208 |
} |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
209 |
|
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
210 |
void jingle_ack_handler_free(JingleAckHandle *ah) |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
211 |
{ |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
212 |
lm_message_handler_unref(ah->_handler); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
213 |
ack_handlers = g_slist_remove(ack_handlers, ah); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
214 |
g_free(ah); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
215 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
216 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
217 |
/** |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
218 |
* mcabber /event callback. |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
219 |
*/ |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
220 |
gboolean evscallback_jingle(guint evcontext, const gchar *arg, |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
221 |
gpointer userdata) |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
222 |
{ |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
223 |
JingleSession *js = (JingleSession*)userdata; |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
224 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
225 |
/* |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
226 |
if (G_UNLIKELY(!jn)) { |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
227 |
scr_LogPrint(LPRINT_LOGNORM, "Error in evs callback."); |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
228 |
return FALSE; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
229 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
230 |
*/ |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
231 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
232 |
if (evcontext == EVS_CONTEXT_TIMEOUT) { |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
233 |
scr_LogPrint(LPRINT_LOGNORM, "Jingle event from %s timed out, cancelled.", |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
234 |
js->from); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
235 |
return FALSE; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
236 |
} |
58 | 237 |
if (evcontext == EVS_CONTEXT_CANCEL) { |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
238 |
scr_LogPrint(LPRINT_LOGNORM, "Jingle event from %s cancelled.", |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
239 |
js->from); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
240 |
return FALSE; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
241 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
242 |
if (!(evcontext == EVS_CONTEXT_ACCEPT || evcontext == EVS_CONTEXT_REJECT)) { |
58 | 243 |
scr_LogPrint(LPRINT_LOGNORM, "Jingle event from %s cancelled.", |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
244 |
js->from); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
245 |
return FALSE; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
246 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
247 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
248 |
if (evcontext == EVS_CONTEXT_ACCEPT) { |
58 | 249 |
scr_LogPrint(LPRINT_LOGNORM, "Jingle event from %s accepted.", |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
250 |
js->from); |
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
251 |
jingle_send_session_accept(js); |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
252 |
} else { |
58 | 253 |
scr_LogPrint(LPRINT_LOGNORM, "Jingle event from %s cancelled.", |
119
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
254 |
js->from); |
0b9a7b505079
create the session when receiving a session-initiate
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
111
diff
changeset
|
255 |
jingle_send_session_terminate(js, "decline"); |
133
361d8577ebd1
Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
129
diff
changeset
|
256 |
|
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
257 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
258 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
259 |
return FALSE; |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
260 |
} |
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
261 |
|
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
262 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
263 |
* @brief Acknowledge the receipt of a message. |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
264 |
* @param m The LmMessage to ack |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
265 |
* |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
266 |
* According to the specifications: |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
267 |
* "An entity that receives an IQ request of type "get" or "set" MUST |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
268 |
* reply with an IQ response of type "result" or "error"."\n |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
269 |
* For Jingle's IQ, we have to reply with an empty "result" IQ to acknowledge |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
270 |
* receipt. |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
271 |
*/ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
272 |
void jingle_ack_iq(LmMessage *m) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
273 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
274 |
LmMessage *r; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
275 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
276 |
r = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_RESULT); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
277 |
lm_connection_send(lconnection, r, NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
278 |
lm_message_unref(r); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
279 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
280 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
281 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
282 |
* @brief Create a new jingle IQ with an error. |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
283 |
* @param m The message to reply to |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
284 |
* @param errtype The error type (the type attribute of <error>) |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
285 |
* @param cond The error condition |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
286 |
* @param jinglecond The jingle error condition |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
287 |
* |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
288 |
* Error types are defined <a href="http://tools.ietf.org/html/ |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
289 |
* draft-ietf-xmpp-3920bis-12#section-8.3.2">section 8.3.2 of RFC 3920bis</a>.\n |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
290 |
* Error conditions are defined <a href="http://tools.ietf.org/html/ |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
291 |
* draft-ietf-xmpp-3920bis-12#section-8.3.3">section 8.3.3 of RFC 3920bis</a>.\n |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
292 |
* Jingle Error conditions are defined <a href="http://xmpp.org/extensions/ |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
293 |
* xep-0166.html#errors">section 10 of XEP-0166</a>. |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
294 |
*/ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
295 |
LmMessage *jingle_new_iq_error(LmMessage *m, const gchar *errtype, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
296 |
const gchar *cond, const gchar *jinglecond) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
297 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
298 |
LmMessage *r; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
299 |
LmMessageNode *err, *tmpnode; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
300 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
301 |
r = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_ERROR); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
302 |
err = lm_message_node_add_child(r->node, "error", NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
303 |
lm_message_node_set_attribute(err, "type", errtype); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
304 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
305 |
if (cond != NULL) { |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
306 |
tmpnode = lm_message_node_add_child(err, cond, NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
307 |
lm_message_node_set_attribute(tmpnode, "xmlns", NS_XMPP_STANZAS); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
308 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
309 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
310 |
if (jinglecond != NULL) { |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
311 |
tmpnode = lm_message_node_add_child(err, jinglecond, NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
312 |
lm_message_node_set_attribute(tmpnode, "xmlns", NS_JINGLE_ERRORS); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
313 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
314 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
315 |
return r; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
316 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
317 |
|
18
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
318 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
319 |
* @brief Reply to a jingle IQ with an error |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
320 |
* @param m The message to reply to |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
321 |
* @param errtype The error type (the type attribute of <error>) |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
322 |
* @param cond The error condition |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
323 |
* @param jinglecond The jingle error condition |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
324 |
* |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
325 |
* Use jingle_new_iq_error internally to generate a LmMessage. |
18
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
326 |
*/ |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
327 |
void jingle_send_iq_error(LmMessage *m, const gchar *errtype, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
328 |
const gchar *cond, const gchar *jinglecond) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
329 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
330 |
LmMessage *r = jingle_new_iq_error(m, errtype, cond, jinglecond); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
331 |
if (r) { |
52
d803c882a182
Fix the ack handlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
48
diff
changeset
|
332 |
lm_connection_send(lconnection, r, NULL); |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
333 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
334 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
335 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
336 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
337 |
* @brief Find the best resource to initiate a jingle session with |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
338 |
* @param jid The jid of the buddy |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
339 |
* @param ns The an array of namespaces we are looking for |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
340 |
* @return A ressource supporting all namespaces in ns or NULL |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
341 |
* if we couldn't find any |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
342 |
* |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
343 |
* Test every ressource for the given jid and return the one |
79
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
344 |
* who support all namespaces in ns. |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
345 |
* Note that you should free the string returned by this function. |
79
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
346 |
*/ |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
347 |
gchar *jingle_find_compatible_res(const gchar *jid, const gchar *ns[]) |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
348 |
{ |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
349 |
gchar *choosenres; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
350 |
guint indexns; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
351 |
gboolean found; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
352 |
GList *roster_usr; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
353 |
GSList *reslist, *thisres; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
354 |
|
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
355 |
roster_usr = buddy_search_jid(jid); |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
356 |
reslist = buddy_getresources(roster_usr->data); |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
357 |
for (thisres = reslist; thisres; thisres = g_slist_next(thisres)) { |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
358 |
found = TRUE; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
359 |
for (indexns = 0; ns[indexns]; indexns++) { |
159
1df5f5e3f1e7
Fix the segfault when quitting in IBB and various other bugs.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
152
diff
changeset
|
360 |
gchar *tmp = buddy_resource_getcaps(roster_usr->data, thisres->data); |
1df5f5e3f1e7
Fix the segfault when quitting in IBB and various other bugs.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
152
diff
changeset
|
361 |
if (!caps_has_feature(tmp, (gchar *)ns[indexns])) |
1df5f5e3f1e7
Fix the segfault when quitting in IBB and various other bugs.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
152
diff
changeset
|
362 |
found = FALSE; |
166
c42c167a2a5c
Rename socks5.c to s5b.c, remove remaining tabulation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
165
diff
changeset
|
363 |
} |
c42c167a2a5c
Rename socks5.c to s5b.c, remove remaining tabulation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
165
diff
changeset
|
364 |
if (!found) continue; |
79
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
365 |
|
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
366 |
choosenres = g_strdup(thisres->data); |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
367 |
g_slist_foreach(reslist, (GFunc)g_free, NULL); |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
368 |
g_slist_free(reslist); |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
369 |
return choosenres; |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
370 |
} |
89
88bb2d0f9ff8
add an namespace to a jingle node
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
86
diff
changeset
|
371 |
|
86 | 372 |
return NULL; |
79
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
373 |
} |
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
374 |
|
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
375 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
376 |
* @brief Find the JingleAction corresponding to a string |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
377 |
* @param string The string to lockup |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
378 |
* @return The #JingleAction or JINGLE_UNKNOWN_ACTION if |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
379 |
* string is not a jingle action |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
380 |
*/ |
35
a0fd92a93af7
Fix the function converting a JingleNode to a LmMessage.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
34
diff
changeset
|
381 |
JingleAction jingle_action_from_str(const gchar *string) |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
382 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
383 |
guint i, actstrlen = sizeof(jingle_action_list)/sizeof(jingle_action_list[0]); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
384 |
for (i = 0; i < actstrlen; i++) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
385 |
if (!g_strcmp0(jingle_action_list[i].name, string)) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
386 |
return (JingleAction) i; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
387 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
388 |
return JINGLE_UNKNOWN_ACTION; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
389 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
390 |
|
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
80
diff
changeset
|
391 |
/** |
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
392 |
* @brief Free a JingleNode struct |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
393 |
* |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
394 |
* Since the JingleNode contains only pointers to the attributes |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
395 |
* and nodes of the LmMessage, we only have to unref the LmMessage |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
396 |
* and free() the struct itself to destroy it. |
81
8b6320ad470b
Add comments, change some function names...
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
80
diff
changeset
|
397 |
*/ |
18
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
398 |
void jingle_free_jinglenode(JingleNode *jn) |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
399 |
{ |
19
60a10ab26723
Modify the "registering" code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
18
diff
changeset
|
400 |
g_slist_foreach(jn->content, (GFunc)g_free, NULL); |
18
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
401 |
g_slist_free(jn->content); |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
402 |
lm_message_unref(jn->message); |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
403 |
g_free(jn); |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
404 |
} |
d0ddcfd31eb8
Change the way the header files are included.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
17
diff
changeset
|
405 |
|
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
406 |
/** |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
407 |
* @brief Unregister our IQ handler to loudmouth. |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
408 |
*/ |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
409 |
static void jingle_unregister_lm_handlers(void) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
410 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
411 |
if (lconnection) { |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
412 |
lm_connection_unregister_message_handler(lconnection, jingle_iq_handler, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
413 |
LM_MESSAGE_TYPE_IQ); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
414 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
415 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
416 |
|
144
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
417 |
/** |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
418 |
* @brief Register our IQ handler to loudmouth. |
efc92c939fef
Document new functions, improve existing documentation
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
139
diff
changeset
|
419 |
*/ |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
420 |
static void jingle_register_lm_handlers(void) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
421 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
422 |
jingle_unregister_lm_handlers(); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
423 |
if (lconnection) { |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
424 |
lm_connection_register_message_handler(lconnection, jingle_iq_handler, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
425 |
LM_MESSAGE_TYPE_IQ, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
426 |
LM_HANDLER_PRIORITY_FIRST); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
427 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
428 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
429 |
|
46
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
430 |
static guint jingle_connect_hh(const gchar *hname, hk_arg_t *args, |
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
431 |
gpointer ignore) |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
432 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
433 |
jingle_register_lm_handlers(); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
434 |
return HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
435 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
436 |
|
46
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
437 |
static guint jingle_disconn_hh(const gchar *hname, hk_arg_t *args, |
f33c814d5b3a
Look if the initiator is in roster (ddos)
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
45
diff
changeset
|
438 |
gpointer ignore) |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
439 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
440 |
jingle_unregister_lm_handlers(); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
441 |
return HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
442 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
443 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
444 |
static void jingle_init(void) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
445 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
446 |
jingle_iq_handler = lm_message_handler_new(jingle_handle_iq, NULL, NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
447 |
xmpp_add_feature(NS_JINGLE); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
448 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
449 |
connect_hid = hk_add_handler(jingle_connect_hh, HOOK_POST_CONNECT, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
450 |
G_PRIORITY_DEFAULT_IDLE, NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
451 |
disconn_hid = hk_add_handler(jingle_disconn_hh, HOOK_PRE_DISCONNECT, |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
452 |
G_PRIORITY_DEFAULT_IDLE, NULL); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
453 |
jingle_register_lm_handlers(); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
454 |
} |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
455 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
456 |
static void jingle_uninit(void) |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
457 |
{ |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
458 |
xmpp_del_feature(NS_JINGLE); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
459 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
460 |
hk_del_handler(HOOK_POST_CONNECT, connect_hid); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
461 |
hk_del_handler(HOOK_PRE_DISCONNECT, disconn_hid); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
462 |
jingle_unregister_lm_handlers(); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
463 |
|
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
464 |
lm_message_handler_invalidate(jingle_iq_handler); |
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
465 |
lm_message_handler_unref(jingle_iq_handler); |
129
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
466 |
|
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
467 |
if (ack_timeout_checker != 0) { |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
468 |
GSource *s = g_main_context_find_source_by_id(NULL, ack_timeout_checker); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
469 |
g_source_destroy(s); |
2d5c3efda92a
Add a timeout to the AckHandlers.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
126
diff
changeset
|
470 |
} |
14
77966ed56e14
Create two subdirectories.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff
changeset
|
471 |
} |
22
a089f2f49e9f
Produce new LmMessageNode with a struct Jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
19
diff
changeset
|
472 |
|
133
361d8577ebd1
Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
129
diff
changeset
|
473 |
void handle_trans_data(gconstpointer data, const gchar *data2, guint len) |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
474 |
{ |
152
a8623ca21574
JFT: app sub-module no more create the session himself
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
151
diff
changeset
|
475 |
SessionContent *sc = sessioncontent_find_by_transport(data); |
54
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
476 |
if (sc == NULL) { |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
477 |
return; |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
478 |
} |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
479 |
sc->appfuncs->handle_data(sc->description, data2, len); |
1c1153f9f945
Handle for jingle
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
52
diff
changeset
|
480 |
} |
67
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
481 |
|
107 | 482 |
void handle_trans_next(session_content *sc2) { |
483 |
JingleSession *sess = session_find_by_sid(sc2->sid, sc2->from); |
|
484 |
if (sess == NULL) { |
|
485 |
// TODO: err |
|
486 |
return; |
|
487 |
} |
|
488 |
||
489 |
SessionContent *sc = session_find_sessioncontent(sess, sc2->name); |
|
490 |
||
491 |
// TODO: size! |
|
123
58bd57666ef9
Add a end function to transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
121
diff
changeset
|
492 |
sc->appfuncs->send(sc2); |
107 | 493 |
g_free(sc2); |
494 |
} |
|
495 |
||
79
a654afc4a74a
Function to detect which jid resource support jingle.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
77
diff
changeset
|
496 |
gchar *jingle_generate_sid(void) |
67
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
497 |
{ |
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
498 |
gchar *sid; |
161
fa1d993d05b6
S5B: Use a GSocketListener to manage listener sockets.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
159
diff
changeset
|
499 |
gchar car[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; |
fa1d993d05b6
S5B: Use a GSocketListener to manage listener sockets.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
159
diff
changeset
|
500 |
gint i; |
67
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
501 |
sid = g_new0(gchar, 11); |
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
502 |
for (i = 0; i < 10; i++) |
161
fa1d993d05b6
S5B: Use a GSocketListener to manage listener sockets.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
159
diff
changeset
|
503 |
sid[i] = car[g_random_int_range(0, sizeof(car)/sizeof(car[0])-1)]; |
67
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
504 |
|
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
505 |
sid[10] = '\0'; |
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
506 |
|
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
507 |
return sid; |
c12618793df0
New functions in sessions
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
61
diff
changeset
|
508 |
} |