diff --git res/pjproject/pjnath/src/pjnath/ice_session.c res/pjproject/pjnath/src/pjnath/ice_session.c index 6bcf1e3..1d5436e 100644 --- res/pjproject/pjnath/src/pjnath/ice_session.c +++ res/pjproject/pjnath/src/pjnath/ice_session.c @@ -1614,7 +1614,7 @@ PJ_DEF(pj_status_t) pj_ice_sess_create_check_list( PJ_ASSERT_RETURN(ice && rem_ufrag && rem_passwd && rcand_cnt && rcand, PJ_EINVAL); - PJ_ASSERT_RETURN(rcand_cnt + ice->rcand_cnt <= PJ_ICE_MAX_CAND, + PJ_ASSERT_RETURN(rcand_cnt <= PJ_ICE_MAX_CAND, PJ_ETOOMANY); pj_mutex_lock(ice->mutex); @@ -1657,6 +1657,7 @@ PJ_DEF(pj_status_t) pj_ice_sess_create_check_list( /* Generate checklist */ clist = &ice->clist; + clist->count = 0; //Forget all previous checks. for (i=0; ilcand_cnt; ++i) { for (j=0; jrcand_cnt; ++j) { diff --git res/res_rtp_asterisk.c res/res_rtp_asterisk.c index a90cc46..2bec80d 100644 --- res/res_rtp_asterisk.c +++ res/res_rtp_asterisk.c @@ -426,6 +426,18 @@ static void ast_rtp_ice_set_authentication(struct ast_rtp_instance *instance, co } } +static void ast_rtp_ice_clean_remote_candidates(struct ast_rtp_instance *instance) +{ + struct ast_rtp *rtp = ast_rtp_instance_get_data(instance); + + if (!rtp->remote_candidates) { + return; + } + + ao2_ref(rtp->remote_candidates, -1); + rtp->remote_candidates = NULL; +} + static void ast_rtp_ice_add_remote_candidate(struct ast_rtp_instance *instance, const struct ast_rtp_engine_ice_candidate *candidate) { struct ast_rtp *rtp = ast_rtp_instance_get_data(instance); @@ -503,7 +515,7 @@ static void ast_rtp_ice_start(struct ast_rtp_instance *instance) struct ast_rtp_engine_ice_candidate *candidate; int cand_cnt = 0; - if (!rtp->ice || !rtp->remote_candidates || rtp->ice_started) { + if (!rtp->ice || !rtp->remote_candidates /* || rtp->ice_started*/) { return; } @@ -549,6 +561,7 @@ static void ast_rtp_ice_start(struct ast_rtp_instance *instance) rtp->ice_started = 1; rtp->strict_rtp_state = STRICT_RTP_OPEN; } + ast_rtp_ice_clean_remote_candidates(instance); } static void ast_rtp_ice_stop(struct ast_rtp_instance *instance)