You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2017/05/23 17:08:59 UTC
svn commit: r1795937 - in /apr/apr/branches/1.6.x: ./ include/ locks/beos/
locks/netware/ locks/os2/ locks/unix/ locks/win32/
Author: wrowe
Date: Tue May 23 17:08:59 2017
New Revision: 1795937
URL: http://svn.apache.org/viewvc?rev=1795937&view=rev
Log:
Revert 1790633 (r1790632 from trunk), was;
apr_{thread,proc,global}_timedlock() with negative timeout is now equivalent
to apr_{thread,proc,global}_trylock(), i.e. immediate attempt to acquire the
lock (but returning APR_TIMEUP if busy).
Modified:
apr/apr/branches/1.6.x/ (props changed)
apr/apr/branches/1.6.x/include/apr_global_mutex.h
apr/apr/branches/1.6.x/include/apr_proc_mutex.h
apr/apr/branches/1.6.x/include/apr_thread_mutex.h
apr/apr/branches/1.6.x/locks/beos/proc_mutex.c
apr/apr/branches/1.6.x/locks/beos/thread_mutex.c
apr/apr/branches/1.6.x/locks/netware/thread_mutex.c
apr/apr/branches/1.6.x/locks/os2/proc_mutex.c
apr/apr/branches/1.6.x/locks/os2/thread_mutex.c
apr/apr/branches/1.6.x/locks/unix/proc_mutex.c
apr/apr/branches/1.6.x/locks/unix/thread_mutex.c
apr/apr/branches/1.6.x/locks/win32/proc_mutex.c
apr/apr/branches/1.6.x/locks/win32/thread_mutex.c
Propchange: apr/apr/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 23 17:08:59 2017
@@ -1,4 +1,4 @@
/apr/apr/branches/1.4.x:1003369,1101301
-/apr/apr/trunk:733052,739635,741862,741866-741867,741869,741871,745763-745764,746310,747990,748080,748361,748371,748565,748888,748902,748988,749810,760443,767895,775683,782838,783398,783958,784633,784773,788588,789050,793192-793193,794118,794485,795267,799497,800627,809745,809854,810472,811455,813063,821306,829490,831641,832904,835607,888669,892028,892159,892435,892909,896382,896653,899905,901088,902077,902090,908427,910419,910597,917819,917837-917838,923311,923320,925965,929796,930508,931973,932585,951771,960665,960671,979891,983618,989450,990435,1003338,1044440,1044447,1055657,1072165,1078845,1081462,1081495,1083038,1083242,1084662,1086695,1088023,1089031,1089129,1089438,1099348,1103310,1183683,1183685-1183686,1183688,1183693,1183698,1213382,1235047,1236970,1237078,1237507,1240472,1340286,1340288,1340470,1341193,1341196,1343233,1343243,1367050,1368819,1370494,1372018,1372022,1372093,1372849,1376957,1384764,1389077,1400200,1402868,1405985,1406690,1420106,1420109,1425356,1428809,143
8940,1438957-1438959,1442903,1449568,1456418,1459994,1460179-1460180,1460241,1460399,1460405,1462738,1462813,1470186,1470348,1475509,1478905,1480067,1481262,1481265,1484271,1487796,1489517,1496407,1502804,1510354,1516261,1523384,1523479,1523484,1523505,1523521,1523604,1523613,1523615,1523844-1523845,1523853,1524014,1524031,1528797,1528809,1529488,1529495,1529515,1529521,1529668,1530786,1530800,1530988,1531554,1531768,1531884,1532022,1533104,1533111,1533979,1535027,1535157,1536744,1538171,1539374,1539389,1539455,1539603,1541054,1541061,1541486,1541655,1541666,1541744,1542601,1542779,1543033,1543056,1548575,1550907,1551650,1551659,1558905,1559382,1559873,1559975,1561040,1561260,1561265,1561321,1561347,1561356,1561361,1561394,1561555,1571894,1575509,1578420,1587045,1587063,1587543,1587545,1588878,1588937,1589982,1593611,1593614-1593615,1593680,1594684,1594708,1595549,1597797,1597803,1604590,1604596,1604598,1605104,1610854,1611023,1611107,1611110,1611117,1611120,1611125,1611184,1611193,
1611466,1611515,1611517,1625173,1626564,1634615,1642159,1648830,1664406,1664447,1664451,1664471,1664769-1664770,1664775,1664904,1664911,1664958,1666341,1666411,1666458,1666611,1667420-1667421,1667423,1667900-1667901,1667903,1667914-1667916,1667962,1669077,1671292,1671329,1671356,1671386,1671389,1671513-1671514,1671957,1672354,1672366,1672495,1672575,1675644,1675656,1675668,1676013,1685929,1696140,1696767,1722547,1722557,1726928,1727020,1727160,1727175,1727199,1728957,1732582,1733451,1733594,1733694,1733706,1733708,1733775,1734816,1736552,1738791,1738925,1750374,1755709,1755740,1755746,1755758,1755954,1761279,1762326,1774712,1774973,1775069,1776994,1776998,1788334,1788337,1789947,1789998,1790045,1790200,1790296,1790302-1790304,1790330-1790331,1790436,1790439,1790444,1790446,1790488,1790521,1790523,1790569,1790632,1791598,1791718,1792961,1792963
+/apr/apr/trunk:733052,739635,741862,741866-741867,741869,741871,745763-745764,746310,747990,748080,748361,748371,748565,748888,748902,748988,749810,760443,767895,775683,782838,783398,783958,784633,784773,788588,789050,793192-793193,794118,794485,795267,799497,800627,809745,809854,810472,811455,813063,821306,829490,831641,832904,835607,888669,892028,892159,892435,892909,896382,896653,899905,901088,902077,902090,908427,910419,910597,917819,917837-917838,923311,923320,925965,929796,930508,931973,932585,951771,960665,960671,979891,983618,989450,990435,1003338,1044440,1044447,1055657,1072165,1078845,1081462,1081495,1083038,1083242,1084662,1086695,1088023,1089031,1089129,1089438,1099348,1103310,1183683,1183685-1183686,1183688,1183693,1183698,1213382,1235047,1236970,1237078,1237507,1240472,1340286,1340288,1340470,1341193,1341196,1343233,1343243,1367050,1368819,1370494,1372018,1372022,1372093,1372849,1376957,1384764,1389077,1400200,1402868,1405985,1406690,1420106,1420109,1425356,1428809,143
8940,1438957-1438959,1442903,1449568,1456418,1459994,1460179-1460180,1460241,1460399,1460405,1462738,1462813,1470186,1470348,1475509,1478905,1480067,1481262,1481265,1484271,1487796,1489517,1496407,1502804,1510354,1516261,1523384,1523479,1523484,1523505,1523521,1523604,1523613,1523615,1523844-1523845,1523853,1524014,1524031,1528797,1528809,1529488,1529495,1529515,1529521,1529668,1530786,1530800,1530988,1531554,1531768,1531884,1532022,1533104,1533111,1533979,1535027,1535157,1536744,1538171,1539374,1539389,1539455,1539603,1541054,1541061,1541486,1541655,1541666,1541744,1542601,1542779,1543033,1543056,1548575,1550907,1551650,1551659,1558905,1559382,1559873,1559975,1561040,1561260,1561265,1561321,1561347,1561356,1561361,1561394,1561555,1571894,1575509,1578420,1587045,1587063,1587543,1587545,1588878,1588937,1589982,1593611,1593614-1593615,1593680,1594684,1594708,1595549,1597797,1597803,1604590,1604596,1604598,1605104,1610854,1611023,1611107,1611110,1611117,1611120,1611125,1611184,1611193,
1611466,1611515,1611517,1625173,1626564,1634615,1642159,1648830,1664406,1664447,1664451,1664471,1664769-1664770,1664775,1664904,1664911,1664958,1666341,1666411,1666458,1666611,1667420-1667421,1667423,1667900-1667901,1667903,1667914-1667916,1667962,1669077,1671292,1671329,1671356,1671386,1671389,1671513-1671514,1671957,1672354,1672366,1672495,1672575,1675644,1675656,1675668,1676013,1685929,1696140,1696767,1722547,1722557,1726928,1727020,1727160,1727175,1727199,1728957,1732582,1733451,1733594,1733694,1733706,1733708,1733775,1734816,1736552,1738791,1738925,1750374,1755709,1755740,1755746,1755758,1755954,1761279,1762326,1774712,1774973,1775069,1776994,1776998,1788334,1788337,1789947,1789998,1790045,1790200,1790296,1790302-1790304,1790330-1790331,1790436,1790439,1790444,1790446,1790488,1790521,1790523,1790569,1791598,1791718,1792961,1792963
/apr/apr/trunk/test/testnames.c:1460405
/httpd/httpd/trunk:1604590
Modified: apr/apr/branches/1.6.x/include/apr_global_mutex.h
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/include/apr_global_mutex.h?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/include/apr_global_mutex.h (original)
+++ apr/apr/branches/1.6.x/include/apr_global_mutex.h Tue May 23 17:08:59 2017
@@ -114,9 +114,7 @@ APR_DECLARE(apr_status_t) apr_global_mut
* Attempt to acquire the lock for the given mutex until timeout expires.
* If the acquisition time outs, the call returns with APR_TIMEUP.
* @param mutex the mutex on which to attempt the lock acquiring.
- * @param timeout the relative timeout (microseconds).
- * @note A negative or nul timeout means immediate attempt, returning
- * APR_TIMEUP without blocking if it the lock is already acquired.
+ * @param timeout the relative timeout (microseconds)
*/
APR_DECLARE(apr_status_t) apr_global_mutex_timedlock(apr_global_mutex_t *mutex,
apr_interval_time_t timeout);
Modified: apr/apr/branches/1.6.x/include/apr_proc_mutex.h
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/include/apr_proc_mutex.h?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/include/apr_proc_mutex.h (original)
+++ apr/apr/branches/1.6.x/include/apr_proc_mutex.h Tue May 23 17:08:59 2017
@@ -119,9 +119,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex
* Attempt to acquire the lock for the given mutex until timeout expires.
* If the acquisition time outs, the call returns with APR_TIMEUP.
* @param mutex the mutex on which to attempt the lock acquiring.
- * @param timeout the relative timeout (microseconds).
- * @note A negative or nul timeout means immediate attempt, returning
- * APR_TIMEUP without blocking if it the lock is already acquired.
+ * @param timeout the relative timeout (microseconds)
*/
APR_DECLARE(apr_status_t) apr_proc_mutex_timedlock(apr_proc_mutex_t *mutex,
apr_interval_time_t timeout);
Modified: apr/apr/branches/1.6.x/include/apr_thread_mutex.h
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/include/apr_thread_mutex.h?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/include/apr_thread_mutex.h (original)
+++ apr/apr/branches/1.6.x/include/apr_thread_mutex.h Tue May 23 17:08:59 2017
@@ -87,9 +87,7 @@ APR_DECLARE(apr_status_t) apr_thread_mut
* Attempt to acquire the lock for the given mutex until timeout expires.
* If the acquisition time outs, the call returns with APR_TIMEUP.
* @param mutex the mutex on which to attempt the lock acquiring.
- * @param timeout the relative timeout (microseconds).
- * @note A timeout negative or nul means immediate attempt, returning
- * APR_TIMEUP without blocking if it the lock is already acquired.
+ * @param timeout the relative timeout (microseconds)
*/
APR_DECLARE(apr_status_t) apr_thread_mutex_timedlock(apr_thread_mutex_t *mutex,
apr_interval_time_t timeout);
Modified: apr/apr/branches/1.6.x/locks/beos/proc_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/beos/proc_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/beos/proc_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/beos/proc_mutex.c Tue May 23 17:08:59 2017
@@ -114,9 +114,12 @@ APR_DECLARE(apr_status_t) apr_proc_mutex
int32 stat;
if (atomic_add(&mutex->LockCount, 1) > 0) {
- if (timeout <= 0) {
+ if (!timeout) {
stat = B_TIMED_OUT;
}
+ else if (timeout < 0) {
+ stat = acquire_sem(mutex->Lock);
+ }
else {
stat = acquire_sem_etc(mutex->Lock, 1, B_RELATIVE_TIMEOUT,
timeout);
Modified: apr/apr/branches/1.6.x/locks/beos/thread_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/beos/thread_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/beos/thread_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/beos/thread_mutex.c Tue May 23 17:08:59 2017
@@ -143,9 +143,12 @@ APR_DECLARE(apr_status_t) apr_thread_mut
}
if (atomic_add(&mutex->LockCount, 1) > 0) {
- if (timeout <= 0) {
+ if (!timeout) {
stat = B_TIMED_OUT;
}
+ else if (timeout < 0) {
+ stat = acquire_sem(mutex->Lock);
+ }
else {
stat = acquire_sem_etc(mutex->Lock, 1, B_RELATIVE_TIMEOUT,
timeout);
Modified: apr/apr/branches/1.6.x/locks/netware/thread_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/netware/thread_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/netware/thread_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/netware/thread_mutex.c Tue May 23 17:08:59 2017
@@ -118,12 +118,18 @@ APR_DECLARE(apr_status_t) apr_thread_mut
apr_status_t rv;
NXLock(mutex->mutex);
if (mutex->locked) {
- if (timeout <= 0) {
+ if (!timeout) {
rv = APR_TIMEUP;
}
else {
mutex->num_waiters++;
- rv = apr_thread_cond_timedwait(mutex->cond, mutex, timeout);
+ if (timeout < 0) {
+ rv = apr_thread_cond_wait(mutex->cond, mutex);
+ }
+ else {
+ rv = apr_thread_cond_timedwait(mutex->cond, mutex,
+ timeout);
+ }
mutex->num_waiters--;
}
}
Modified: apr/apr/branches/1.6.x/locks/os2/proc_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/os2/proc_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/os2/proc_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/os2/proc_mutex.c Tue May 23 17:08:59 2017
@@ -166,7 +166,10 @@ APR_DECLARE(apr_status_t) apr_proc_mutex
{
ULONG rc;
- if (timeout <= 0) {
+ if (timeout < 0) {
+ rc = DosRequestMutexSem(mutex->hMutex, SEM_INDEFINITE_WAIT);
+ }
+ else if (!timeout) {
rc = DosRequestMutexSem(mutex->hMutex, SEM_IMMEDIATE_RETURN);
}
else {
Modified: apr/apr/branches/1.6.x/locks/os2/thread_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/os2/thread_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/os2/thread_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/os2/thread_mutex.c Tue May 23 17:08:59 2017
@@ -77,7 +77,10 @@ APR_DECLARE(apr_status_t) apr_thread_mut
{
ULONG rc;
- if (timeout <= 0) {
+ if (timeout < 0) {
+ rc = DosRequestMutexSem(mutex->hMutex, SEM_INDEFINITE_WAIT);
+ }
+ else if (!timeout) {
rc = DosRequestMutexSem(mutex->hMutex, SEM_IMMEDIATE_RETURN);
}
else {
Modified: apr/apr/branches/1.6.x/locks/unix/proc_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/unix/proc_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/unix/proc_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/unix/proc_mutex.c Tue May 23 17:08:59 2017
@@ -58,27 +58,32 @@ static apr_status_t proc_mutex_no_perms_
static apr_status_t proc_mutex_spinsleep_timedacquire(apr_proc_mutex_t *mutex,
apr_interval_time_t timeout)
{
-#define SLEEP_TIME apr_time_from_msec(10)
apr_status_t rv;
- for (;;) {
- rv = apr_proc_mutex_trylock(mutex);
- if (!APR_STATUS_IS_EBUSY(rv)) {
- if (rv == APR_SUCCESS) {
- mutex->curr_locked = 1;
+ if (timeout < 0) {
+ rv = apr_proc_mutex_lock(mutex);
+ }
+ else {
+#define SLEEP_TIME apr_time_from_msec(10)
+ for (;;) {
+ rv = apr_proc_mutex_trylock(mutex);
+ if (!APR_STATUS_IS_EBUSY(rv)) {
+ if (rv == APR_SUCCESS) {
+ mutex->curr_locked = 1;
+ }
+ break;
+ }
+ if (!timeout) {
+ rv = APR_TIMEUP;
+ break;
+ }
+ if (timeout > SLEEP_TIME) {
+ apr_sleep(SLEEP_TIME);
+ timeout -= SLEEP_TIME;
+ }
+ else {
+ apr_sleep(timeout);
+ timeout = 0;
}
- break;
- }
- if (timeout <= 0) {
- rv = APR_TIMEUP;
- break;
- }
- if (timeout > SLEEP_TIME) {
- apr_sleep(SLEEP_TIME);
- timeout -= SLEEP_TIME;
- }
- else {
- apr_sleep(timeout);
- timeout = 0;
}
}
return rv;
@@ -225,7 +230,10 @@ static apr_status_t proc_mutex_posix_try
static apr_status_t proc_mutex_posix_timedacquire(apr_proc_mutex_t *mutex,
apr_interval_time_t timeout)
{
- if (timeout <= 0) {
+ if (timeout < 0) {
+ return proc_mutex_posix_acquire(mutex);
+ }
+ else if (!timeout) {
apr_status_t rv = proc_mutex_posix_tryacquire(mutex);
return (rv == APR_EBUSY) ? APR_TIMEUP : rv;
}
@@ -380,7 +388,10 @@ static apr_status_t proc_mutex_sysv_trya
static apr_status_t proc_mutex_sysv_timedacquire(apr_proc_mutex_t *mutex,
apr_interval_time_t timeout)
{
- if (timeout <= 0) {
+ if (timeout < 0) {
+ return proc_mutex_sysv_acquire(mutex);
+ }
+ else if (!timeout) {
apr_status_t rv = proc_mutex_sysv_tryacquire(mutex);
return (rv == APR_EBUSY) ? APR_TIMEUP : rv;
}
@@ -504,6 +515,9 @@ typedef struct {
} proc_pthread_mutex_t;
+static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex,
+ apr_interval_time_t timeout);
+
static APR_INLINE int proc_pthread_mutex_inc(apr_proc_mutex_t *mutex)
{
if (mutex->pthread_refcounting) {
@@ -684,8 +698,19 @@ static apr_status_t proc_mutex_pthread_c
return APR_SUCCESS;
}
-static apr_status_t proc_mutex_pthread_acquire_ex(apr_proc_mutex_t *mutex,
- apr_interval_time_t timeout)
+static apr_status_t proc_mutex_pthread_acquire(apr_proc_mutex_t *mutex)
+{
+ return proc_mutex_pthread_timedacquire(mutex, -1);
+}
+
+static apr_status_t proc_mutex_pthread_tryacquire(apr_proc_mutex_t *mutex)
+{
+ apr_status_t rv = proc_mutex_pthread_timedacquire(mutex, 0);
+ return (rv == APR_TIMEUP) ? APR_EBUSY : rv;
+}
+
+static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex,
+ apr_interval_time_t timeout)
{
#if !APR_USE_PROC_PTHREAD_MUTEX_COND && !defined(HAVE_PTHREAD_MUTEX_TIMEDLOCK)
return proc_mutex_spinsleep_timedacquire(mutex, timeout);
@@ -818,23 +843,6 @@ static apr_status_t proc_mutex_pthread_a
#endif
}
-static apr_status_t proc_mutex_pthread_acquire(apr_proc_mutex_t *mutex)
-{
- return proc_mutex_pthread_acquire_ex(mutex, -1);
-}
-
-static apr_status_t proc_mutex_pthread_tryacquire(apr_proc_mutex_t *mutex)
-{
- apr_status_t rv = proc_mutex_pthread_acquire_ex(mutex, 0);
- return (rv == APR_TIMEUP) ? APR_EBUSY : rv;
-}
-
-static apr_status_t proc_mutex_pthread_timedacquire(apr_proc_mutex_t *mutex,
- apr_interval_time_t timeout)
-{
- return proc_mutex_pthread_acquire_ex(mutex, (timeout <= 0) ? 0 : timeout);
-}
-
static apr_status_t proc_mutex_pthread_release(apr_proc_mutex_t *mutex)
{
apr_status_t rv;
Modified: apr/apr/branches/1.6.x/locks/unix/thread_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/unix/thread_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/unix/thread_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/unix/thread_mutex.c Tue May 23 17:08:59 2017
@@ -195,7 +195,15 @@ APR_DECLARE(apr_status_t) apr_thread_mut
apr_status_t rv = APR_ENOTIMPL;
#ifdef HAVE_PTHREAD_MUTEX_TIMEDLOCK
- if (timeout <= 0) {
+ if (timeout < 0) {
+ rv = pthread_mutex_lock(&mutex->mutex);
+#ifdef HAVE_ZOS_PTHREADS
+ if (rv) {
+ rv = errno;
+ }
+#endif
+ }
+ else if (!timeout) {
rv = pthread_mutex_trylock(&mutex->mutex);
if (rv) {
#ifdef HAVE_ZOS_PTHREADS
@@ -236,12 +244,18 @@ APR_DECLARE(apr_status_t) apr_thread_mut
}
if (mutex->locked) {
- if (timeout <= 0) {
+ if (!timeout) {
rv = APR_TIMEUP;
}
else {
mutex->num_waiters++;
- rv = apr_thread_cond_timedwait(mutex->cond, mutex, timeout);
+ if (timeout < 0) {
+ rv = apr_thread_cond_wait(mutex->cond, mutex);
+ }
+ else {
+ rv = apr_thread_cond_timedwait(mutex->cond, mutex,
+ timeout);
+ }
#ifdef HAVE_ZOS_PTHREADS
if (rv) {
rv = errno;
Modified: apr/apr/branches/1.6.x/locks/win32/proc_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/win32/proc_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/win32/proc_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/win32/proc_mutex.c Tue May 23 17:08:59 2017
@@ -167,13 +167,18 @@ APR_DECLARE(apr_status_t) apr_proc_mutex
APR_DECLARE(apr_status_t) apr_proc_mutex_timedlock(apr_proc_mutex_t *mutex,
apr_interval_time_t timeout)
{
- DWORD rv, timeout_ms = (timeout <= 0) ? 0 : apr_time_as_msec(timeout);
+ DWORD rv;
- rv = WaitForSingleObject(mutex->handle, timeout_ms);
-
- if (rv == WAIT_TIMEOUT) {
- return APR_TIMEUP;
+ if (timeout < 0) {
+ rv = WaitForSingleObject(mutex->handle, INFINITE);
+ }
+ else {
+ rv = WaitForSingleObject(mutex->handle, apr_time_as_msec(timeout));
+ if (rv == WAIT_TIMEOUT) {
+ return APR_TIMEUP;
+ }
}
+
if (rv == WAIT_OBJECT_0 || rv == WAIT_ABANDONED) {
return APR_SUCCESS;
}
Modified: apr/apr/branches/1.6.x/locks/win32/thread_mutex.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.6.x/locks/win32/thread_mutex.c?rev=1795937&r1=1795936&r2=1795937&view=diff
==============================================================================
--- apr/apr/branches/1.6.x/locks/win32/thread_mutex.c (original)
+++ apr/apr/branches/1.6.x/locks/win32/thread_mutex.c Tue May 23 17:08:59 2017
@@ -118,7 +118,13 @@ APR_DECLARE(apr_status_t) apr_thread_mut
apr_interval_time_t timeout)
{
if (mutex->type != thread_mutex_critical_section) {
- DWORD rv, timeout_ms = (timeout <= 0) ? 0 : apr_time_as_msec(timeout);
+ DWORD rv, timeout_ms;
+ if (timeout < 0) {
+ timeout_ms = INFINITE;
+ }
+ else {
+ timeout_ms = apr_time_as_msec(timeout);
+ }
rv = WaitForSingleObject(mutex->handle, timeout_ms);
if ((rv != WAIT_OBJECT_0) && (rv != WAIT_ABANDONED)) {
return (rv == WAIT_TIMEOUT) ? APR_TIMEUP : apr_get_os_error();