]> granicus.if.org Git - apache/commitdiff
Do not return on WAIT_ABANDONED signals.
authorMladen Turk <mturk@apache.org>
Thu, 3 Aug 2006 08:24:44 +0000 (08:24 +0000)
committerMladen Turk <mturk@apache.org>
Thu, 3 Aug 2006 08:24:44 +0000 (08:24 +0000)
It means that we got the ownership, not that the
object was signaled.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@428278 13f79535-47bb-0310-9956-ffa450edef68

os/win32/util_win32.c

index e8ba49c760ea98d6e15db81511262f6387ed4353..4113602d89f46eee6fbe72d94b6b686c3760d278 100644 (file)
@@ -157,12 +157,12 @@ void CleanNullACL(void *sa)
 DWORD wait_for_many_objects(DWORD nCount, CONST HANDLE *lpHandles,
                             DWORD dwSeconds)
 {
-    time_t tStopTime;
+    DWORD dwStopTime;
     DWORD dwRet = WAIT_FAILED;
-    DWORD dwIndex=0;
+    DWORD dwIndex = 0;
     BOOL bFirst = TRUE;
 
-    tStopTime = time(NULL) + dwSeconds;
+    dwStopTime = GetTickCount() + dwSeconds * 1000;
 
     do {
         if (!bFirst)
@@ -179,16 +179,19 @@ DWORD wait_for_many_objects(DWORD nCount, CONST HANDLE *lpHandles,
                 return dwRet;
             }
             if (dwRet != WAIT_TIMEOUT) {
-                if (dwRet >= WAIT_ABANDONED_0)
-                    dwRet = dwRet - WAIT_ABANDONED_0;
-                else
-                    dwRet = dwRet - WAIT_OBJECT_0;
-                dwRet = dwRet + (dwIndex * MAXIMUM_WAIT_OBJECTS);
-                break;
+                if (dwRet >= WAIT_ABANDONED_0) {
+                    /* We just got the ownership of the object.
+                     * It does not mean that the object is signaled.
+                     */
+                }
+                else {
+                    dwRet = dwRet - WAIT_OBJECT_0 + (dwIndex * MAXIMUM_WAIT_OBJECTS);
+                    break;
+                }
             }
             dwRet = WAIT_FAILED;
         }
-    } while((time(NULL) < tStopTime) && (dwRet == WAIT_FAILED));
+    } while((GetTickCount() < dwStopTime) && (dwRet == WAIT_FAILED));
 
     return dwRet;
 }