X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=cgi-fcgi%2Fcgi-fcgi.c;h=a5c75b1cd9a05e39e50d001755a3ccfe34cb3438;hb=89856cf418427fa82845a7c164253d4faacbf614;hp=11efaecf46c58e340eefb3eb0b2e69cac23aa7a0;hpb=f1734b803919589766655c85fca97c6d1ad1a3c8;p=catagits%2Ffcgi2.git diff --git a/cgi-fcgi/cgi-fcgi.c b/cgi-fcgi/cgi-fcgi.c index 11efaec..a5c75b1 100644 --- a/cgi-fcgi/cgi-fcgi.c +++ b/cgi-fcgi/cgi-fcgi.c @@ -6,12 +6,12 @@ * * Copyright (c) 1996 Open Market, Inc. * - * See the file "LICENSE.TERMS" for information on usage and redistribution + * See the file "LICENSE" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ #ifndef lint -static const char rcsid[] = "$Id: cgi-fcgi.c,v 1.11 2001/06/19 17:12:01 robs Exp $"; +static const char rcsid[] = "$Id: cgi-fcgi.c,v 1.16 2003/06/22 02:02:33 robs Exp $"; #endif /* not lint */ #include @@ -21,7 +21,6 @@ static const char rcsid[] = "$Id: cgi-fcgi.c,v 1.11 2001/06/19 17:12:01 robs Exp #include #include #include -#include #include "fcgi_config.h" @@ -31,6 +30,7 @@ static const char rcsid[] = "$Id: cgi-fcgi.c,v 1.11 2001/06/19 17:12:01 robs Exp #ifdef _WIN32 #include +#include #else extern char **environ; #endif @@ -43,13 +43,12 @@ extern char **environ; #include #endif -#if defined HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H #include #endif #include "fcgimisc.h" #include "fcgiapp.h" -#include "fcgiappmisc.h" #include "fastcgi.h" #include "fcgios.h" @@ -112,12 +111,12 @@ static FCGI_Header MakeHeader( ASSERT(contentLength >= 0 && contentLength <= FCGI_MAX_LENGTH); ASSERT(paddingLength >= 0 && paddingLength <= 0xff); header.version = FCGI_VERSION_1; - header.type = type; - header.requestIdB1 = (requestId >> 8) & 0xff; - header.requestIdB0 = (requestId ) & 0xff; - header.contentLengthB1 = (contentLength >> 8) & 0xff; - header.contentLengthB0 = (contentLength ) & 0xff; - header.paddingLength = paddingLength; + header.type = (unsigned char) type; + header.requestIdB1 = (unsigned char) ((requestId >> 8) & 0xff); + header.requestIdB0 = (unsigned char) ((requestId ) & 0xff); + header.contentLengthB1 = (unsigned char) ((contentLength >> 8) & 0xff); + header.contentLengthB0 = (unsigned char) ((contentLength ) & 0xff); + header.paddingLength = (unsigned char) paddingLength; header.reserved = 0; return header; } @@ -137,9 +136,9 @@ static FCGI_BeginRequestBody MakeBeginRequestBody( { FCGI_BeginRequestBody body; ASSERT((role >> 16) == 0); - body.roleB1 = (role >> 8) & 0xff; - body.roleB0 = (role ) & 0xff; - body.flags = (keepConnection) ? FCGI_KEEP_CONN : 0; + body.roleB1 = (unsigned char) ((role >> 8) & 0xff); + body.roleB0 = (unsigned char) (role & 0xff); + body.flags = (unsigned char) ((keepConnection) ? FCGI_KEEP_CONN : 0); memset(body.reserved, 0, sizeof(body.reserved)); return body; } @@ -189,7 +188,7 @@ static int stdinFds[3]; static void FCGIexit(int exitCode) { if(appServerSock != -1) { - OS_Close(appServerSock); + OS_Close(appServerSock, TRUE); appServerSock = -1; } OS_LibShutdown(); @@ -213,11 +212,14 @@ static void FCGIexit(int exitCode) *---------------------------------------------------------------------- */ -static void AppServerReadHandler(ClientData clientData, int bytesRead) +static void AppServerReadHandler(ClientData dc, int bytesRead) { int count, outFD; char *ptr; + /* Touch unused parameters to avoid warnings */ + dc = NULL; + assert(fcgiReadPending == TRUE); fcgiReadPending = FALSE; count = bytesRead; @@ -230,7 +232,7 @@ static void AppServerReadHandler(ClientData clientData, int bytesRead) exit(FCGX_PROTOCOL_ERROR); } if(appServerSock != -1) { - OS_Close(appServerSock); + OS_Close(appServerSock, TRUE); appServerSock = -1; } /* @@ -371,8 +373,11 @@ static void WriteStdinEof(void) *---------------------------------------------------------------------- */ -static void WebServerReadHandler(ClientData clientData, int bytesRead) +static void WebServerReadHandler(ClientData dc, int bytesRead) { + /* Touch unused parameters to avoid warnings */ + dc = NULL; + assert(fromWS.next == fromWS.stop); assert(fromWS.next == &fromWS.buff[0]); assert(wsReadPending == TRUE); @@ -405,10 +410,13 @@ static void WebServerReadHandler(ClientData clientData, int bytesRead) *---------------------------------------------------------------------- */ -static void AppServerWriteHandler(ClientData clientData, int bytesWritten) +static void AppServerWriteHandler(ClientData dc, int bytesWritten) { int length = fromWS.stop - fromWS.next; + /* Touch unused parameters to avoid warnings */ + dc = NULL; + assert(length > 0); assert(fcgiWritePending == TRUE); @@ -523,7 +531,7 @@ static void FCGI_Start(char *bindPath, char *appPath, int nServers) exit(OS_Errno); } } - OS_Close(listenFd); + OS_Close(listenFd, TRUE); } /* @@ -551,21 +559,21 @@ static void FCGIUtil_BuildNameValueHeader( ASSERT(nameLen >= 0); if (nameLen < 0x80) { - *headerBuffPtr++ = nameLen; + *headerBuffPtr++ = (unsigned char) nameLen; } else { - *headerBuffPtr++ = (nameLen >> 24) | 0x80; - *headerBuffPtr++ = (nameLen >> 16); - *headerBuffPtr++ = (nameLen >> 8); - *headerBuffPtr++ = nameLen; + *headerBuffPtr++ = (unsigned char) ((nameLen >> 24) | 0x80); + *headerBuffPtr++ = (unsigned char) (nameLen >> 16); + *headerBuffPtr++ = (unsigned char) (nameLen >> 8); + *headerBuffPtr++ = (unsigned char) nameLen; } ASSERT(valueLen >= 0); if (valueLen < 0x80) { - *headerBuffPtr++ = valueLen; + *headerBuffPtr++ = (unsigned char) valueLen; } else { - *headerBuffPtr++ = (valueLen >> 24) | 0x80; - *headerBuffPtr++ = (valueLen >> 16); - *headerBuffPtr++ = (valueLen >> 8); - *headerBuffPtr++ = valueLen; + *headerBuffPtr++ = (unsigned char) ((valueLen >> 24) | 0x80); + *headerBuffPtr++ = (unsigned char) (valueLen >> 16); + *headerBuffPtr++ = (unsigned char) (valueLen >> 8); + *headerBuffPtr++ = (unsigned char) valueLen; } *headerLenPtr = headerBuffPtr - startHeaderBuffPtr; } @@ -788,7 +796,7 @@ int main(int argc, char **argv) /* * Send environment to the FCGI application server */ - paramsStream = CreateWriter(appServerSock, requestId, 8192, FCGI_PARAMS); + paramsStream = FCGX_CreateWriter(appServerSock, requestId, 8192, FCGI_PARAMS); for( ; *envp != NULL; envp++) { equalPtr = strchr(*envp, '='); if(equalPtr == NULL) { @@ -807,7 +815,7 @@ int main(int argc, char **argv) } } FCGX_FClose(paramsStream); - FreeStream(¶msStream); + FCGX_FreeStream(¶msStream); /* * Perform the event loop until AppServerReadHander sees FCGI_END_REQUEST */