summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_media.c
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2011-10-03 08:22:48 +0000
committerLiong Sauw Ming <ming@teluu.com>2011-10-03 08:22:48 +0000
commitf3f2c4b1e8ec8416fce15fc5db9ea6c6059f307d (patch)
tree7d26081a3f71a384befdc68f71054f028f6f8ffa /pjsip/src/pjsua-lib/pjsua_media.c
parent1685526712e312b701db96c977604343c3550ba1 (diff)
Re #1266: Modified pjsua_media_channel_deinit() to resume deinit in the callback (instead of returning PJ_EBUSY) and make sure the right transport is used before calling dlg_respond()
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3780 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_media.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 7cd133a4..876f26b6 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -2113,12 +2113,20 @@ pj_status_t pjsua_media_channel_deinit(pjsua_call_id call_id)
pjsua_call *call = &pjsua_var.calls[call_id];
unsigned mi;
+ PJSUA_LOCK();
for (mi=0; mi<call->med_cnt; ++mi) {
pjsua_call_media *call_med = &call->media[mi];
- if (call_med->tp_st == PJSUA_MED_TP_CREATING)
- return PJ_EBUSY;
+ if (call_med->tp_st == PJSUA_MED_TP_CREATING) {
+ /* We will do the deinitialization after media transport
+ * creation is completed.
+ */
+ call->async_call.med_ch_deinit = PJ_TRUE;
+ PJSUA_UNLOCK();
+ return PJ_SUCCESS;
+ }
}
+ PJSUA_UNLOCK();
PJ_LOG(4,(THIS_FILE, "Call %d: deinitializing media..", call_id));
pj_log_push_indent();