diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2013-02-15 03:57:31 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2013-02-15 03:57:31 +0000 |
commit | c689d8400319e07e3dacfbdb73878e494358b14f (patch) | |
tree | b1af416f4c19ad5a0b9b563dacfc2adaf34af50c | |
parent | 63dd4e2920526640644b2b31faa63f0ad2278c25 (diff) |
Re #1242: Fixed ICE nego completion check as it always returns FALSE when peer doesn't support ICE.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4350 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/include/pjmedia/transport_ice.h | 6 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/transport_ice.c | 2 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 6 |
3 files changed, 12 insertions, 2 deletions
diff --git a/pjmedia/include/pjmedia/transport_ice.h b/pjmedia/include/pjmedia/transport_ice.h index 0ba55618..1b44467e 100644 --- a/pjmedia/include/pjmedia/transport_ice.h +++ b/pjmedia/include/pjmedia/transport_ice.h @@ -69,6 +69,12 @@ typedef struct pjmedia_ice_cb typedef struct pjmedia_ice_transport_info { /** + * Specifies whether ICE is used, i.e. SDP offer and answer indicates + * that both parties support ICE and ICE should be used for the session. + */ + pj_bool_t active; + + /** * ICE sesion state. */ pj_ice_strans_state sess_state; diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 4a55161f..abd872ae 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -1543,6 +1543,8 @@ static pj_status_t transport_get_info(pjmedia_transport *tp, ii = (pjmedia_ice_transport_info*) tsi->buffer; pj_bzero(ii, sizeof(*ii)); + ii->active = tp_ice->use_ice; + if (pj_ice_strans_has_sess(tp_ice->ice_st)) ii->role = pj_ice_strans_get_role(tp_ice->ice_st); else diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index 79f6c1d3..8bda8fa6 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -3076,11 +3076,13 @@ static pj_bool_t check_ice_complete(pjsua_call *call, pj_bool_t *need_reinv) ice_info = (pjmedia_ice_transport_info*) pjmedia_transport_info_get_spc_info( &tpinfo, PJMEDIA_TRANSPORT_TYPE_ICE); - if (!ice_info) + + /* Check if ICE is active */ + if (!ice_info || !ice_info->active) continue; /* Check if ICE setup not completed yet */ - if (ice_info->sess_state < PJ_ICE_STRANS_STATE_RUNNING) { + if (ice_info->sess_state < PJ_ICE_STRANS_STATE_RUNNING) { ice_complete = PJ_FALSE; break; } |