summaryrefslogtreecommitdiff
path: root/pjnath
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-08-12 12:20:21 +0000
committerBenny Prijono <bennylp@teluu.com>2008-08-12 12:20:21 +0000
commitd8d7e851457103079bc561bf815089d5b6c967e5 (patch)
treecee17c82c1947fb0c93d67f421c08f1188b62a0d /pjnath
parent852a9cac8973aa2baa9047b0daecc30d4b8f21a1 (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.c17
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;
}
}