Provide FCGX_Free().
[catagits/fcgi2.git] / libfcgi / fcgiapp.c
index 3ac0093..6d1e781 100644 (file)
@@ -11,7 +11,7 @@
  *
  */
 #ifndef lint
-static const char rcsid[] = "$Id: fcgiapp.c,v 1.14 2000/08/02 13:07:40 robs Exp $";
+static const char rcsid[] = "$Id: fcgiapp.c,v 1.16 2000/11/05 17:09:35 robs Exp $";
 #endif /* not lint */
 
 #include "fcgi_config.h"
@@ -661,8 +661,8 @@ int FCGX_VFPrintF(FCGX_Stream *stream, const char *format, va_list arg)
                             buffCount = strlen(buffPtr);
                             break;
                        case 'h':
-                            shortArg = va_arg(arg, short);
-                           sprintf(buffPtr, fmtBuff, shortArg);
+                            shortArg = (short) va_arg(arg, int);
+                            sprintf(buffPtr, fmtBuff, shortArg);
                             buffCount = strlen(buffPtr);
                             break;
                        default:
@@ -685,8 +685,8 @@ int FCGX_VFPrintF(FCGX_Stream *stream, const char *format, va_list arg)
                             buffCount = strlen(buffPtr);
                             break;
                         case 'h':
-                            uShortArg = va_arg(arg, unsigned short);
-                           sprintf(buffPtr, fmtBuff, uShortArg);
+                            uShortArg = (unsigned short) va_arg(arg, int);
+                            sprintf(buffPtr, fmtBuff, uShortArg);
                             buffCount = strlen(buffPtr);
                             break;
                         default:
@@ -1988,30 +1988,29 @@ void FCGX_Finish_r(FCGX_Request *reqDataPtr)
         int errStatus = FCGX_FClose(reqDataPtr->err);
         int outStatus = FCGX_FClose(reqDataPtr->out);
 
-        if (errStatus  || outStatus
-            || FCGX_GetError(reqDataPtr->in)
-            || !reqDataPtr->keepConnection)
+        if (errStatus || outStatus || FCGX_GetError(reqDataPtr->in))
         {
             OS_IpcClose(reqDataPtr->ipcFd);
         }
+    }
 
-        ASSERT(reqDataPtr->nWriters == 0);
-
-        FreeStream(&reqDataPtr->in);
-        reqDataPtr->in = NULL;
-
-        FreeStream(&reqDataPtr->out);
-        reqDataPtr->out = NULL;
+    FCGX_Free(reqDataPtr);
+}
 
-        FreeStream(&reqDataPtr->err);
-        reqDataPtr->err = NULL;
+void FCGX_Free(FCGX_Request * request)
+{
+    if (request == NULL) 
+        return;
 
-        FreeParams(&reqDataPtr->paramsPtr);
-        reqDataPtr->paramsPtr = NULL;
-    }
+    FreeStream(&request->in);
+    FreeStream(&request->out);
+    FreeStream(&request->err);
+    FreeParams(&request->paramsPtr);
 
-    if (!reqDataPtr->keepConnection) {
-        reqDataPtr->ipcFd = -1;
+    if (!request->keepConnection)
+    {
+        OS_IpcClose(request->ipcFd);
+        request->ipcFd = -1;
     }
 }
 
@@ -2219,14 +2218,8 @@ int FCGX_Accept_r(FCGX_Request *reqDataPtr)
          * Close the connection and try again.
          */
 TryAgain:
-        FreeParams(&reqDataPtr->paramsPtr);
-        reqDataPtr->paramsPtr = NULL;
-
-        FreeStream(&reqDataPtr->in);
-        reqDataPtr->in = NULL;
+        FCGX_Free(reqDataPtr);
 
-        OS_Close(reqDataPtr->ipcFd);
-        reqDataPtr->ipcFd = -1;
     } /* for (;;) */
     /*
      * Build the remaining data structures representing the new