From 88938bc59f786d4064e5b17b351724b016edde4b Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Wed, 28 Dec 2011 09:52:07 +0000 Subject: Fix #1433: synchronuous ICE initialization calls PJSUA_UNLOCK() only when the PJSUA lock is actually held by this thread. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3929 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_media.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'pjsip/src/pjsua-lib') diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 571be8ae..7665e751 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -978,11 +978,14 @@ static pj_status_t create_ice_media_transport( /* Wait until transport is initialized, or time out */ if (!async) { - PJSUA_UNLOCK(); + pj_bool_t has_pjsua_lock = PJSUA_LOCK_IS_LOCKED(); + if (has_pjsua_lock) + PJSUA_UNLOCK(); while (call_med->tp_ready == PJ_EPENDING) { pjsua_handle_events(100); } - PJSUA_LOCK(); + if (has_pjsua_lock) + PJSUA_LOCK(); } if (async && call_med->tp_ready == PJ_EPENDING) { -- cgit v1.2.3