summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_call.c
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2010-09-07 05:12:02 +0000
committerLiong Sauw Ming <ming@teluu.com>2010-09-07 05:12:02 +0000
commitc7f48f004e14c0be8b4c5fcd82c6a5ccc64c170a (patch)
tree4ad4e2141c1eab80a75e219cd380b15e29d954e2 /pjsip/src/pjsua-lib/pjsua_call.c
parent72549c62dbda8bcdc5afab24c468f701728fb3d7 (diff)
Fixed #1117: Configurable PJSUA-LIB lock timeout
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3304 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_call.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index d390009e..ed5eb100 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -1130,13 +1130,26 @@ pj_status_t acquire_call(const char *title,
pjsua_call **p_call,
pjsip_dialog **p_dlg)
{
- enum { MAX_RETRY=50 };
unsigned retry;
pjsua_call *call = NULL;
pj_bool_t has_pjsua_lock = PJ_FALSE;
pj_status_t status = PJ_SUCCESS;
+ pj_time_val time_start, timeout;
- for (retry=0; retry<MAX_RETRY; ++retry) {
+ pj_gettimeofday(&time_start);
+ timeout.msec = PJSUA_ACQUIRE_CALL_TIMEOUT;
+ pj_time_val_normalize(&timeout);
+
+ for (retry=0; ; ++retry) {
+
+ if (retry % 10 == 9) {
+ pj_time_val dtime;
+
+ pj_gettimeofday(&dtime);
+ PJ_TIME_VAL_SUB(dtime, time_start);
+ if (!PJ_TIME_VAL_LT(dtime, timeout))
+ break;
+ }
has_pjsua_lock = PJ_FALSE;