diff options
author | Liong Sauw Ming <ming@teluu.com> | 2011-10-25 08:51:02 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2011-10-25 08:51:02 +0000 |
commit | 9e4ddc18f6e2b4d9a68f1c93bfee541f315e80fc (patch) | |
tree | 8767cf3d0f107c80000087a590c48555f7be5639 /pjsip/src/pjsua-lib/pjsua_media.c | |
parent | d11fa21bf60ef14b9979ac3643dad1360f442c7f (diff) |
Fixed #1398: TURN initialization failure scenario
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3849 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_media.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 60aebbeb..57866983 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -777,10 +777,12 @@ static void on_ice_complete(pjmedia_transport *tp, switch (op) { case PJ_ICE_STRANS_OP_INIT: + PJSUA_LOCK(); call_med->tp_ready = result; if (call_med->med_create_cb) (*call_med->med_create_cb)(call_med, result, call_med->call->secure_level, NULL); + PJSUA_UNLOCK(); break; case PJ_ICE_STRANS_OP_NEGOTIATION: if (result != PJ_SUCCESS) { @@ -1419,24 +1421,15 @@ pj_status_t pjsua_call_media_init(pjsua_call_media *call_med, set_media_tp_state(call_med, PJSUA_MED_TP_CREATING); - if (async) { - call_med->med_create_cb = &call_media_init_cb; - call_med->med_init_cb = cb; - } - if (pjsua_var.media_cfg.enable_ice) { status = create_ice_media_transport(tcfg, call_med, async); - if (async && status == PJ_SUCCESS) { - /* Callback has been called. */ - call_med->med_init_cb = NULL; - /* We cannot return PJ_SUCCESS here since we already call - * the callback. - */ - return PJ_EPENDING; - } else if (async && status == PJ_EPENDING) { + if (async && status == PJ_EPENDING) { /* We will resume call media initialization in the * on_ice_complete() callback. */ + call_med->med_create_cb = &call_media_init_cb; + call_med->med_init_cb = cb; + return PJ_EPENDING; } } else { |