-rw-r--r-- | src/fastcgi.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/fastcgi.cc b/src/fastcgi.cc index 8b7668c..63b59f8 100644 --- a/src/fastcgi.cc +++ b/src/fastcgi.cc @@ -1,40 +1,45 @@ #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> +#include <fastcgi.h> #include "kingate/fastcgi.h" #include "kingate/exception.h" namespace kingate { bool fcgi_socket::_initialized = false; fcgi_socket::fcgi_socket(const char *s,int bl) : sock(-1) { if(!_initialized) { if( FCGX_Init() ) throw exception(CODEPOINT,"failed to FCGX_Init()"); _initialized = true; } - sock = FCGX_OpenSocket(s,bl); - if(sock<0) - throw exception(CODEPOINT,"failed to FCGX_OpenSocket("); - // TODO: check if there is a ':', not if it starts with ':' - if(*s != ':') - if(chmod(s,0777)) // XXX: configurable. - throw exception(CODEPOINT,"failed to chmod()"); + if(!s) { + sock = FCGI_LISTENSOCK_FILENO; + }else{ + sock = FCGX_OpenSocket(s,bl); + if(sock<0) + throw exception(CODEPOINT,"failed to FCGX_OpenSocket("); + // TODO: check if there is a ':', not if it starts with ':' + if(*s != ':') + if(chmod(s,0777)) // XXX: configurable. + throw exception(CODEPOINT,"failed to chmod()"); + } } fcgi_socket::fcgi_socket(int s) : sock(0) { if(!_initialized) { if( FCGX_Init() ) throw exception(CODEPOINT,"failed to FCGX_Init()"); _initialized = true; } } fcgi_socket::~fcgi_socket() { if(sock>=0) close(sock); } fcgi_interface::fcgi_interface(fcgi_socket& s,int f) : sbin(buf_sbin,sizeof(buf_sbin)), |