X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=include%2Ffcgios.h;h=80fe006489db55a9f5ce3bf1bbfd7e415d705272;hb=60a09042dc4d66f5d2c1c81f26dc534dbce8e353;hp=003acf1119702a49546824ccecc8bce32b8db2d2;hpb=52c5620a46a72386244ee1d5b70ba97005bd8bfa;p=catagits%2Ffcgi2.git diff --git a/include/fcgios.h b/include/fcgios.h index 003acf1..80fe006 100755 --- a/include/fcgios.h +++ b/include/fcgios.h @@ -1,4 +1,4 @@ -/* +/* * fcgios.h -- * * Description of file. @@ -8,9 +8,9 @@ * All rights reserved. * * This file contains proprietary and confidential information and - * remains the unpublished property of Open Market, Inc. Use, - * disclosure, or reproduction is prohibited except as permitted by - * express written license agreement with Open Market, Inc. + * remains the unpublished property of Open Market, Inc. Use, + * disclosure, or reproduction is prohibited except as permitted by + * express written license agreement with Open Market, Inc. * * Bill Snapper * snapper@openmarket.com @@ -18,7 +18,19 @@ #ifndef _FCGIOS_H #define _FCGIOS_H +#include "fcgi_config.h" + +#ifdef HAVE_SYS_TIME_H #include +#endif + +#ifdef HAVE_WINDOWS_H +#include +#endif + +#if defined (c_plusplus) || defined (__cplusplus) +extern "C" { +#endif #ifdef _WIN32 #define OS_Errno GetLastError() @@ -26,21 +38,30 @@ #ifndef DLLAPI #define DLLAPI __declspec(dllimport) #endif -#else +#ifndef O_NONBLOCK +#define O_NONBLOCK 0x0004 /* no delay */ +#endif +#else /* !_WIN32 */ #define DLLAPI #define OS_Errno errno #define OS_SetErrno(err) errno = (err) -#endif - -#ifdef _WIN32 -#include -#endif +#endif /* !_WIN32 */ + +/* This is the initializer for a "struct timeval" used in a select() call + * right after a new request is accept()ed to determine readablity. Its + * a drop-dead timer. Its only used for AF_UNIX sockets (not TCP sockets). + * Its a workaround for a kernel bug in Linux 2.0.x and SCO Unixware. + * Making this as small as possible, yet remain reliable would be best. + * 2 seconds is very conservative. 0,0 is not reliable. The shorter the + * timeout, the faster request processing will recover. The longer the + * timeout, the more likely this application being "busy" will cause other + * requests to abort and cause more dead sockets that need this timeout. */ +#define READABLE_UNIX_FD_DROP_DEAD_TIMEVAL 2,0 #ifndef STDIN_FILENO #define STDIN_FILENO 0 #endif - #ifndef STDOUT_FILENO #define STDOUT_FILENO 1 #endif @@ -57,16 +78,6 @@ #define X_OK 0x01 #endif -#ifdef _WIN32 -#ifndef O_NONBLOCK -#define O_NONBLOCK 0x0004 /* no delay */ -#endif -#endif - -#if defined (c_plusplus) || defined (__cplusplus) -extern "C" { -#endif - #ifndef _CLIENTDATA # if defined(__STDC__) || defined(__cplusplus) typedef void *ClientData; @@ -80,23 +91,23 @@ typedef void (*OS_AsyncProc) (ClientData clientData, int len); DLLAPI int OS_LibInit(int stdioFds[3]); DLLAPI void OS_LibShutdown(void); -DLLAPI int OS_CreateLocalIpcFd(char *bindPath); +DLLAPI int OS_CreateLocalIpcFd(const char *bindPath, int backlog); DLLAPI int OS_FcgiConnect(char *bindPath); DLLAPI int OS_Read(int fd, char * buf, size_t len); DLLAPI int OS_Write(int fd, char * buf, size_t len); DLLAPI int OS_SpawnChild(char *execPath, int listenFd); -DLLAPI int OS_AsyncReadStdin(void *buf, int len, OS_AsyncProc procPtr, +DLLAPI int OS_AsyncReadStdin(void *buf, int len, OS_AsyncProc procPtr, ClientData clientData); DLLAPI int OS_AsyncRead(int fd, int offset, void *buf, int len, OS_AsyncProc procPtr, ClientData clientData); -DLLAPI int OS_AsyncWrite(int fd, int offset, void *buf, int len, +DLLAPI int OS_AsyncWrite(int fd, int offset, void *buf, int len, OS_AsyncProc procPtr, ClientData clientData); DLLAPI int OS_Close(int fd); DLLAPI int OS_CloseRead(int fd); DLLAPI int OS_DoIo(struct timeval *tmo); -DLLAPI int OS_FcgiIpcAccept(char *clientAddrList); +DLLAPI int OS_Accept(int listen_sock, int fail_on_intr, const char *webServerAddrs); DLLAPI int OS_IpcClose(int ipcFd); -DLLAPI int OS_IsFcgi(void); +DLLAPI int OS_IsFcgi(int sock); DLLAPI void OS_SetFlags(int fd, int flags); #if defined (__cplusplus) || defined (c_plusplus)