Re #1266:

 * Make sure that all media transports are already created and completed to fix the assertion when making call using ICE.

 * Change the callback pjsua_med_tp_state_cb to return pj_status_t (instead of void)



git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3796 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 2b5130c..636d095 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -530,9 +530,12 @@
   *
   * @param call_id	The call ID.
   * @param info         The media transport state info.
+  *
+  * @return		The callback must return PJ_SUCCESS at the moment.
   */
-typedef void (*pjsua_med_tp_state_cb)(pjsua_call_id call_id,
-                                      const pjsua_med_tp_state_info *info);
+typedef pj_status_t
+(*pjsua_med_tp_state_cb)(pjsua_call_id call_id,
+                         const pjsua_med_tp_state_info *info);
 
 
 /**
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 64aeac4..ad96a4d 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -630,7 +630,6 @@
     status = pjsua_media_channel_init(call->index, PJSIP_ROLE_UAC, 
 				      call->secure_level, dlg->pool,
 				      NULL, NULL, PJ_TRUE,
-                                      (pjsua_med_tp_state_cb)
                                       &on_make_call_med_tp_complete);
     if (status == PJ_SUCCESS) {
         status = on_make_call_med_tp_complete(call->index, NULL);
@@ -1096,7 +1095,6 @@
 				      rdata->tp_info.pool,
 				      offer,
 				      &sip_err_code, PJ_TRUE,
-                                      (pjsua_med_tp_state_cb)
                                       &on_incoming_call_med_tp_complete);
     if (status == PJ_SUCCESS) {
         status = on_incoming_call_med_tp_complete(call_id, NULL);
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 876f26b..e774365 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -1481,7 +1481,9 @@
         for (mi=0; mi < call->med_cnt; ++mi) {
             pjsua_call_media *call_med = &call->media[mi];
 
-            if (call_med->med_init_cb) {
+            if (call_med->med_init_cb ||
+                call_med->tp_st == PJSUA_MED_TP_NULL)
+            {
                 pj_mutex_unlock(call->med_ch_mutex);
                 return PJ_SUCCESS;
             }
@@ -1697,8 +1699,8 @@
 	                                   &acc->cfg.rtp_cfg,
 					   security_level, sip_err_code,
                                            async,
-                                           (async? (pjsua_med_tp_state_cb)
-                                           &media_channel_init_cb: NULL));
+                                           (async? &media_channel_init_cb:
+                                            NULL));
             if (status == PJ_EPENDING) {
                 pending_med_tp = PJ_TRUE;
             } else if (status != PJ_SUCCESS) {