diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-08-12 12:20:21 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-08-12 12:20:21 +0000 |
commit | d8d7e851457103079bc561bf815089d5b6c967e5 (patch) | |
tree | cee17c82c1947fb0c93d67f421c08f1188b62a0d /pjnath | |
parent | 852a9cac8973aa2baa9047b0daecc30d4b8f21a1 (diff) |
More ticket #591: Assertion failure in ICE session (thanks Pedro Gonçalves for the report)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2206 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r-- | pjnath/src/pjnath/ice_session.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c index 77deed5a..c646e905 100644 --- a/pjnath/src/pjnath/ice_session.c +++ b/pjnath/src/pjnath/ice_session.c @@ -1666,9 +1666,14 @@ PJ_DEF(pj_status_t) pj_ice_sess_start_check(pj_ice_sess *ice) return PJNATH_EICEINCOMPID; } - /* Set this check to WAITING */ - check_set_state(ice, &clist->checks[i], - PJ_ICE_SESS_CHECK_STATE_WAITING, PJ_SUCCESS); + /* Set this check to WAITING only if state is frozen. It may be possible + * that this check has already been started by a trigger check + */ + if (clist->checks[i].state == PJ_ICE_SESS_CHECK_STATE_FROZEN) { + check_set_state(ice, &clist->checks[i], + PJ_ICE_SESS_CHECK_STATE_WAITING, PJ_SUCCESS); + } + cand0 = clist->checks[i].lcand; flist[flist_cnt++] = &clist->checks[i].lcand->foundation; @@ -1684,8 +1689,10 @@ PJ_DEF(pj_status_t) pj_ice_sess_start_check(pj_ice_sess *ice) if (cand1->comp_id==cand0->comp_id && find_str(flist, flist_cnt, &cand1->foundation)==NULL) { - check_set_state(ice, &clist->checks[i], - PJ_ICE_SESS_CHECK_STATE_WAITING, PJ_SUCCESS); + if (clist->checks[i].state == PJ_ICE_SESS_CHECK_STATE_FROZEN) { + check_set_state(ice, &clist->checks[i], + PJ_ICE_SESS_CHECK_STATE_WAITING, PJ_SUCCESS); + } flist[flist_cnt++] = &cand1->foundation; } } |