-rw-r--r-- | src/fastcgi.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/fastcgi.cc b/src/fastcgi.cc index 8b7668c..5a6c081 100644 --- a/src/fastcgi.cc +++ b/src/fastcgi.cc @@ -1,51 +1,52 @@ #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> +#include <cstring> #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()"); } 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)), sbout(buf_sbout,sizeof(buf_sbout)), sberr(buf_sberr,sizeof(buf_sberr)), sin(&sbin), sout(&sbout), serr(&sberr) { if( FCGX_InitRequest(&request,s.sock,f) ) throw exception(CODEPOINT,"failed to FCGX_InitRequest()"); if( FCGX_Accept_r(&request) ) throw exception(CODEPOINT,"failed to FCGX_Accept_r()"); sbin.attach(request.in); sbout.attach(request.out); sberr.attach(request.err); for(char **p = request.envp; *p; p++) { |