diff options
Diffstat (limited to 'locks/netware/thread_mutex.c')
-rw-r--r-- | locks/netware/thread_mutex.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/locks/netware/thread_mutex.c b/locks/netware/thread_mutex.c index a43215dce..a11ad8345 100644 --- a/locks/netware/thread_mutex.c +++ b/locks/netware/thread_mutex.c @@ -119,17 +119,22 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_timedlock(apr_thread_mutex_t *mutex, apr_status_t rv; NXLock(mutex->mutex); if (mutex->locked) { - if (absolute) { - apr_time_t now = apr_time_now(); - if (timeout > now) { - timeout -= now; - } - else { - timeout = 0; + mutex->num_waiters++; + if (timeout < 0) { + rv = apr_thread_cond_dwait(mutex->cond, mutex); + } + else { + if (absolute) { + apr_time_t now = apr_time_now(); + if (timeout > now) { + timeout -= now; + } + else { + timeout = 0; + } } + rv = apr_thread_cond_timedwait(mutex->cond, mutex, timeout); } - mutex->num_waiters++; - rv = apr_thread_cond_timedwait(mutex->cond, mutex, timeout); mutex->num_waiters--; } else { |