-rw-r--r-- | include/kingate/fastcgi.h | 15 | ||||
-rw-r--r-- | src/fastcgi.cc | 5 |
2 files changed, 19 insertions, 1 deletions
diff --git a/include/kingate/fastcgi.h b/include/kingate/fastcgi.h index fd293b9..6f136b3 100644 --- a/include/kingate/fastcgi.h +++ b/include/kingate/fastcgi.h | |||
@@ -38,20 +38,35 @@ namespace kingate { | |||
38 | /** | 38 | /** |
39 | * The implementation of the interface to the FastCGI. | 39 | * The implementation of the interface to the FastCGI. |
40 | */ | 40 | */ |
41 | class fcgi_interface : public cgi_interface { | 41 | class fcgi_interface : public cgi_interface { |
42 | public: | 42 | public: |
43 | /** | 43 | /** |
44 | * buffer for sbin | ||
45 | * @see sbin | ||
46 | */ | ||
47 | char buf_sbin[512]; | ||
48 | /** | ||
44 | * stdin fcgi streambuf. | 49 | * stdin fcgi streambuf. |
45 | */ | 50 | */ |
46 | fcgi_streambuf sbin; | 51 | fcgi_streambuf sbin; |
47 | /** | 52 | /** |
53 | * buffer for sbout | ||
54 | * @see sbout | ||
55 | */ | ||
56 | char buf_sbout[512]; | ||
57 | /** | ||
48 | * stdout fcgi streambuf. | 58 | * stdout fcgi streambuf. |
49 | */ | 59 | */ |
50 | fcgi_streambuf sbout; | 60 | fcgi_streambuf sbout; |
51 | /** | 61 | /** |
62 | * buffer for sberr | ||
63 | * @see sberr | ||
64 | */ | ||
65 | char buf_sberr[512]; | ||
66 | /** | ||
52 | * stderr fcgi streambuf. | 67 | * stderr fcgi streambuf. |
53 | */ | 68 | */ |
54 | fcgi_streambuf sberr; | 69 | fcgi_streambuf sberr; |
55 | /** | 70 | /** |
56 | * stdin istream. | 71 | * stdin istream. |
57 | */ | 72 | */ |
diff --git a/src/fastcgi.cc b/src/fastcgi.cc index 6285370..8b7668c 100644 --- a/src/fastcgi.cc +++ b/src/fastcgi.cc | |||
@@ -34,13 +34,16 @@ namespace kingate { | |||
34 | fcgi_socket::~fcgi_socket() { | 34 | fcgi_socket::~fcgi_socket() { |
35 | if(sock>=0) | 35 | if(sock>=0) |
36 | close(sock); | 36 | close(sock); |
37 | } | 37 | } |
38 | 38 | ||
39 | fcgi_interface::fcgi_interface(fcgi_socket& s,int f) | 39 | fcgi_interface::fcgi_interface(fcgi_socket& s,int f) |
40 | : sin(&sbin), sout(&sbout), serr(&sberr) { | 40 | : sbin(buf_sbin,sizeof(buf_sbin)), |
41 | sbout(buf_sbout,sizeof(buf_sbout)), | ||
42 | sberr(buf_sberr,sizeof(buf_sberr)), | ||
43 | sin(&sbin), sout(&sbout), serr(&sberr) { | ||
41 | if( FCGX_InitRequest(&request,s.sock,f) ) | 44 | if( FCGX_InitRequest(&request,s.sock,f) ) |
42 | throw exception(CODEPOINT,"failed to FCGX_InitRequest()"); | 45 | throw exception(CODEPOINT,"failed to FCGX_InitRequest()"); |
43 | if( FCGX_Accept_r(&request) ) | 46 | if( FCGX_Accept_r(&request) ) |
44 | throw exception(CODEPOINT,"failed to FCGX_Accept_r()"); | 47 | throw exception(CODEPOINT,"failed to FCGX_Accept_r()"); |
45 | sbin.attach(request.in); | 48 | sbin.attach(request.in); |
46 | sbout.attach(request.out); | 49 | sbout.attach(request.out); |