struct jingle_session *session;
struct ast_channel *chan;
enum jingle_transport transport = JINGLE_TRANSPORT_NONE;
+ struct ast_rtp_engine_ice *ice;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(name);
AST_APP_ARG(target);
jingle_enable_video(session);
}
+ /* As this is outgoing set ourselves as controlling */
+ if (session->rtp && (ice = ast_rtp_instance_get_ice(session->rtp))) {
+ ice->ice_lite(session->rtp);
+ }
+
+ if (session->vrtp && (ice = ast_rtp_instance_get_ice(session->vrtp))) {
+ ice->ice_lite(session->vrtp);
+ }
+
/* We purposely don't decrement the session here as there is a reference on the channel */
ao2_link(endpoint->state->sessions, session);
return -1;
}
- if (ast_strlen_zero(ufrag) || ast_strlen_zero(pwd)) {
- jingle_queue_hangup_with_cause(session, AST_CAUSE_PROTOCOL_ERROR);
- ast_log(LOG_ERROR, "Invalid ICE-UDP transport information received on session '%s', ufrag or pwd not present\n", session->sid);
- return -1;
+ if (!ast_strlen_zero(ufrag) && !ast_strlen_zero(pwd)) {
+ ice->set_authentication(rtp, ufrag, pwd);
}
- ice->set_authentication(rtp, ufrag, pwd);
-
for (candidate = iks_child(transport); candidate; candidate = iks_next(candidate)) {
char *component = iks_find_attrib(candidate, "component"), *foundation = iks_find_attrib(candidate, "foundation");
char *generation = iks_find_attrib(candidate, "generation"), *id = iks_find_attrib(candidate, "id");
ao2_iterator_destroy(&i);
+ ast_log(LOG_NOTICE, "ufrag = %s password = %s\n", rtp->remote_ufrag, rtp->remote_passwd);
+
if (pj_ice_sess_create_check_list(rtp->ice, &ufrag, &passwd, ao2_container_count(rtp->remote_candidates), &candidates[0]) == PJ_SUCCESS) {
pj_ice_sess_start_check(rtp->ice);
pj_timer_heap_poll(timerheap, NULL);
{
pj_lock_t *lock;
- pj_log_set_level(0);
+// pj_log_set_level(0);
if (pj_init() != PJ_SUCCESS) {
return AST_MODULE_LOAD_DECLINE;