summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2013-02-15 03:57:31 +0000
committerNanang Izzuddin <nanang@teluu.com>2013-02-15 03:57:31 +0000
commitc689d8400319e07e3dacfbdb73878e494358b14f (patch)
treeb1af416f4c19ad5a0b9b563dacfc2adaf34af50c
parent63dd4e2920526640644b2b31faa63f0ad2278c25 (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.h6
-rw-r--r--pjmedia/src/pjmedia/transport_ice.c2
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c6
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;
}