[Cherokee-commits] rev 1473 - in cherokee/trunk
cherokee at cherokee-project.com
cherokee at cherokee-project.com
Mon May 26 19:33:32 CEST 2008
Author: alo
Date: 2008-05-26 19:33:32 +0200 (Mon, 26 May 2008)
New Revision: 1473
Log:
Get the changeset with:
svn diff -r 1472:1473 svn://svn.cherokee-project.com/
Modified:
cherokee/trunk/ChangeLog
4 ++++
cherokee/trunk/cherokee/handler_cgi_base.c
10 +++++++---
cherokee/trunk/cherokee/handler_cgi_base.h
1 +
Modified: cherokee/trunk/ChangeLog
===================================================================
--- cherokee/trunk/ChangeLog 2008-05-26 14:39:06 UTC (rev 1472)
+++ cherokee/trunk/ChangeLog 2008-05-26 17:33:32 UTC (rev 1473)
@@ -1,5 +1,9 @@
2008-05-26 Alvaro Lopez Ortega <alvaro at alobbs.com>
+ * cherokee/handler_cgi_base.h,cherokee/handler_cgi_base.c: Do not
+ use chuncked encoding when there is a content-length header. Do
+ not use it either when there is no response body.
+
* cherokee/buffer.c, cherokee/handler_cgi_base.h,
cherokee/handler_cgi_base.c: Added "Transfer-Encoding: chunked"
support for all the CGI based handlers: CGI, SCGI and FastCGI.
Modified: cherokee/trunk/cherokee/handler_cgi_base.c
===================================================================
--- cherokee/trunk/cherokee/handler_cgi_base.c 2008-05-26 14:39:06 UTC (rev 1472)
+++ cherokee/trunk/cherokee/handler_cgi_base.c 2008-05-26 17:33:32 UTC (rev 1473)
@@ -69,6 +69,7 @@
*/
cgi->init_phase = hcgi_phase_build_headers;
cgi->content_length = 0;
+ cgi->content_length_set = false;
cgi->chunked = false;
cgi->got_eof = false;
@@ -767,6 +768,7 @@
cherokee_buffer_add (&tmp, begin+16, end - (begin+16));
cgi->content_length = strtoll (tmp.buf, (char **)NULL, 10);
+ cgi->content_length_set = true;
cherokee_buffer_mrproper (&tmp);
cherokee_buffer_remove_chunk (buffer, begin - buffer->buf, end2 - begin);
@@ -847,12 +849,14 @@
/* At this point, cgi->content_length has already got a value
* if the response contained a Content-Length header
*/
- cgi->chunked = ((cgi->content_length <= 0) &&
+ cgi->chunked = ((! cgi->content_length_set) &&
+ (cgi->content_length > 0) &&
(HANDLER_CGI_BASE_PROPS(cgi)->allow_chunked) &&
(HANDLER_CONN(cgi)->header.version == http_version_11));
- TRACE (ENTRIES, "Chunked: nolen=%d, allowed=%d, version=%d => %d\n",
- (cgi->content_length <= 0),
+ TRACE (ENTRIES, "Chunked: !len_set=%d, len=%d, allowed=%d, version=%d => %d\n",
+ (! cgi->content_length_set),
+ cgi->content_length,
(HANDLER_CGI_BASE_PROPS(cgi)->allow_chunked),
(HANDLER_CONN(cgi)->header.version == http_version_11),
cgi->chunked);
Modified: cherokee/trunk/cherokee/handler_cgi_base.h
===================================================================
--- cherokee/trunk/cherokee/handler_cgi_base.h 2008-05-26 14:39:06 UTC (rev 1472)
+++ cherokee/trunk/cherokee/handler_cgi_base.h 2008-05-26 17:33:32 UTC (rev 1473)
@@ -61,6 +61,7 @@
char *extra_param;
cherokee_boolean_t chunked;
+ cherokee_boolean_t content_length_set;
size_t content_length;
cherokee_buffer_t param;
More information about the Cherokee-commits
mailing list