[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