summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjnath/src/pjnath/ice_strans.c7
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c20
3 files changed, 22 insertions, 11 deletions
diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
index 906f2683..2ceaaabb 100644
--- a/pjnath/src/pjnath/ice_strans.c
+++ b/pjnath/src/pjnath/ice_strans.c
@@ -585,12 +585,13 @@ PJ_DEF(pj_status_t) pj_ice_strans_create( const char *name,
/* Done with initialization */
pj_lock_release(ice_st->init_lock);
- /* Check if all candidates are ready (this may call callback) */
- sess_init_update(ice_st);
-
PJ_LOG(4,(ice_st->obj_name, "ICE stream transport created"));
*p_ice_st = ice_st;
+
+ /* Check if all candidates are ready (this may call callback) */
+ sess_init_update(ice_st);
+
pj_log_pop_indent();
return PJ_SUCCESS;
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index d3c655f1..02f3f6a3 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -612,8 +612,10 @@ PJ_DEF(pj_status_t) pjsua_call_make_call( pjsua_acc_id acc_id,
call->user_data = user_data;
call->async_call.call_var.out_call.options = options;
- call->async_call.call_var.out_call.msg_data = pjsua_msg_data_clone(
- dlg->pool, msg_data);
+ if (msg_data) {
+ call->async_call.call_var.out_call.msg_data = pjsua_msg_data_clone(
+ dlg->pool, msg_data);
+ }
call->async_call.dlg = dlg;
/* Init media channel */
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 626965b5..aee2f1f4 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -1414,16 +1414,24 @@ pj_status_t pjsua_call_media_init(pjsua_call_media *call_med,
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) {
+ /* We will resume call media initialization in the
+ * on_ice_complete() callback.
+ */
+ return PJ_EPENDING;
+ }
} else {
status = create_udp_media_transport(tcfg, call_med);
}
- if (status == PJ_EPENDING) {
- /* We will resume call media initialization in the
- * on_ice_complete() callback.
- */
- return PJ_EPENDING;
- } else if (status != PJ_SUCCESS) {
+ if (status != PJ_SUCCESS) {
PJ_PERROR(1,(THIS_FILE, status, "Error creating media transport"));
return status;
}