(WIN32) Fixed initialization of the accept mutex when OpenSocket() was used. Niklas...
robs [Fri, 30 Nov 2001 17:48:57 +0000 (17:48 +0000)]
README
libfcgi/os_win32.c

diff --git a/README b/README
index 9164a1b..f3b6299 100755 (executable)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 FastCGI Developer's Kit README
 ------------------------------
 
-    $Id: README,v 1.10 2001/11/27 12:58:34 robs Exp $
+    $Id: README,v 1.11 2001/11/30 17:48:58 robs Exp $
     Copyright (c) 1996 Open Market, Inc.
     See the file "LICENSE.TERMS" for information on usage and redistribution
     of this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -27,6 +27,12 @@ CHANGES
 
 Unfortunately documentation of many of the changes have been lost.
 
+2.2.3
+-----
+
+ *) (WIN32) Fixed initialization of the accept mutex when OpenSocket() was used.
+    Niklas Bergh [niklas.bergh@tific.com]
+
 
 2.2.2  
 -----
index fd14229..d15955c 100755 (executable)
@@ -17,7 +17,7 @@
  *  significantly more enjoyable.)
  */
 #ifndef lint
-static const char rcsid[] = "$Id: os_win32.c,v 1.24 2001/09/14 19:43:27 robs Exp $";
+static const char rcsid[] = "$Id: os_win32.c,v 1.25 2001/11/30 17:48:57 robs Exp $";
 #endif /* not lint */
 
 #define WIN32_LEAN_AND_MEAN 
@@ -52,6 +52,7 @@ static HANDLE hStdinThread = INVALID_HANDLE_VALUE;
 static HANDLE stdioHandles[3] = {INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE,
                                 INVALID_HANDLE_VALUE};
 
+// This is a nail for listening to more than one port..\r
 static HANDLE acceptMutex = INVALID_HANDLE_VALUE;
 
 static BOOLEAN shutdownPending = FALSE;
@@ -363,16 +364,16 @@ int OS_LibInit(int stdioFds[3])
         }
     }
 
-    /*
-     * If an accept mutex is in the env, save it and remove it.
-     */
-    val = getenv(MUTEX_VARNAME);
-    if (val != NULL) 
-    {
-        acceptMutex = (HANDLE) atoi(val);
+    if (acceptMutex == INVALID_HANDLE_VALUE)\r
+    {\r
+        /* If an accept mutex is in the env, use it */
+        val = getenv(MUTEX_VARNAME);
+        if (val != NULL) 
+        {
+            acceptMutex = (HANDLE) atoi(val);
+        }\r
     }
 
-
     /*
      * Determine if this library is being used to listen for FastCGI
      * connections.  This is communicated by STDIN containing a
@@ -688,26 +689,14 @@ int OS_CreateLocalIpcFd(const char *bindPath, int backlog)
 {
     int pseudoFd = -1;
     short port = getPort(bindPath);
-    HANDLE mutex = CreateMutex(NULL, FALSE, NULL);
-    char * mutexEnvString;
 
-    if (mutex == NULL)
-    {
-        return -2;
-    }
-
-    if (! SetHandleInformation(mutex, HANDLE_FLAG_INHERIT, TRUE))
-    {
-        return -3;
+    if (acceptMutex == INVALID_HANDLE_VALUE)\r
+    {\r
+        acceptMutex = CreateMutex(NULL, FALSE, NULL);\r
+        if (acceptMutex == NULL) return -2;
+        if (! SetHandleInformation(acceptMutex, HANDLE_FLAG_INHERIT, TRUE)) return -3;
     }
 
-    // This is a nail for listening to more than one port..
-    // This should really be handled by the caller.
-
-    mutexEnvString = malloc(strlen(MUTEX_VARNAME) + 7);
-    sprintf(mutexEnvString, MUTEX_VARNAME "=%d", (int) mutex);
-    putenv(mutexEnvString);
-
     // There's nothing to be gained (at the moment) by a shutdown Event    
 
     if (port && *bindPath != ':' && strncmp(bindPath, LOCALHOST, strlen(LOCALHOST)))