equal
deleted
inserted
replaced
33 #include <jingle/register.h> |
33 #include <jingle/register.h> |
34 #include <jingle/send.h> |
34 #include <jingle/send.h> |
35 #include <jingle/action-handlers.h> |
35 #include <jingle/action-handlers.h> |
36 #include <jingle/general-handlers.h> |
36 #include <jingle/general-handlers.h> |
37 |
37 |
|
38 extern LmMessageHandler* jingle_ack_iq_handler; |
|
39 |
38 void handle_content_accept(JingleNode *jn) |
40 void handle_content_accept(JingleNode *jn) |
39 { |
41 { |
40 GError *err = NULL; |
42 GError *err = NULL; |
41 GSList *child = NULL; |
43 GSList *child = NULL; |
42 JingleContent *cn; |
44 JingleContent *cn; |
84 const gchar *xmlns; |
86 const gchar *xmlns; |
85 JingleSession *sess; |
87 JingleSession *sess; |
86 JingleNode accept, reject; |
88 JingleNode accept, reject; |
87 JingleContent tmp_cn; |
89 JingleContent tmp_cn; |
88 LmMessage *r; |
90 LmMessage *r; |
89 |
91 ack_iq *elem; |
90 |
92 |
91 if (!check_contents(jn, &err)) { |
93 if (!check_contents(jn, &err)) { |
92 scr_log_print(LPRINT_DEBUG, "jingle: One of the content element was invalid (%s)", |
94 scr_log_print(LPRINT_DEBUG, "jingle: One of the content element was invalid (%s)", |
93 err->message); |
95 err->message); |
94 jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL); |
96 jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL); |
95 return; |
97 return; |
143 } |
145 } |
144 |
146 |
145 if (g_slist_length(accept.content) != 0) { |
147 if (g_slist_length(accept.content) != 0) { |
146 r = lm_message_from_jinglenode(&accept, lm_message_get_from(jn->message)); |
148 r = lm_message_from_jinglenode(&accept, lm_message_get_from(jn->message)); |
147 if (r) { |
149 if (r) { |
148 lm_connection_send_with_reply(lconnection, r,NULL, NULL); |
150 elem->id = g_strdup(lm_message_get_id(r)); |
|
151 elem->callback = NULL; |
|
152 elem->udata = NULL; |
|
153 add_ack_wait(elem); |
|
154 // TODO: errors |
|
155 lm_connection_send_with_reply(lconnection, r, jingle_ack_iq_handler, &err); |
149 lm_message_unref(r); |
156 lm_message_unref(r); |
150 } |
157 } |
151 } |
158 } |
152 |
159 |
153 if (g_slist_length(reject.content) != 0) { |
160 if (g_slist_length(reject.content) != 0) { |
154 r = lm_message_from_jinglenode(&reject, lm_message_get_from(jn->message)); |
161 r = lm_message_from_jinglenode(&reject, lm_message_get_from(jn->message)); |
155 if (r) { |
162 if (r) { |
156 lm_connection_send(lconnection, r, NULL); |
163 elem->id = g_strdup(lm_message_get_id(r)); |
|
164 elem->callback = NULL; |
|
165 elem->udata = NULL; |
|
166 add_ack_wait(elem); |
|
167 // TODO: errors |
|
168 lm_connection_send_with_reply(lconnection, r, jingle_ack_iq_handler, &err); |
157 lm_message_unref(r); |
169 lm_message_unref(r); |
158 } |
170 } |
159 } |
171 } |
160 } |
172 } |
161 |
173 |