summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2005-07-04 18:08:49 (UTC)
committer Michael Krelin <hacker@klever.net>2005-07-04 18:08:49 (UTC)
commitc8bcbfb951eec5fe14dac0b14f4faaf4a9f9f229 (patch) (unidiff)
tree60d24c0465cd57c839fa46de97cc35e59cc5b535
parent43d47575878e4eaf3c8da84bf609fcd0bde595fb (diff)
downloadkingate-c8bcbfb951eec5fe14dac0b14f4faaf4a9f9f229.zip
kingate-c8bcbfb951eec5fe14dac0b14f4faaf4a9f9f229.tar.gz
kingate-c8bcbfb951eec5fe14dac0b14f4faaf4a9f9f229.tar.bz2
added buffers to fastcgi streambufs. It gains compatibility with normal streambuf manipulations at the cost of performance (according to comments in fcgi devkit). The performance lost should not be disastrous, though.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/kingate/fastcgi.h15
-rw-r--r--src/fastcgi.cc5
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);