iliaa           Fri Oct 17 01:31:13 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/sapi/cgi   cgi_main.c 
  Log:
  Fixed bug #46319 (PHP sets default Content-Type header for HTTP 304 response
  code, in cgi sapi)
  
  
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.267.2.15.2.50.2.28&r2=1.267.2.15.2.50.2.29&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.28 
php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.29
--- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.28    Tue Sep  2 13:22:15 2008
+++ php-src/sapi/cgi/cgi_main.c Fri Oct 17 01:31:12 2008
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: cgi_main.c,v 1.267.2.15.2.50.2.28 2008/09/02 13:22:15 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.267.2.15.2.50.2.29 2008/10/17 01:31:12 iliaa Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -376,6 +376,7 @@
        sapi_header_struct *h;
        zend_llist_position pos;
        zend_bool ignore_status = 0;
+       int response_status = SG(sapi_headers).http_response_code;
 
        if (SG(request_info).no_headers == 1) {
                return  SAPI_HEADER_SENT_SUCCESSFULLY;
@@ -387,7 +388,11 @@
                zend_bool has_status = 0;
 
                if (CGIG(rfc2616_headers) && SG(sapi_headers).http_status_line) 
{
+                       char *s;
                        len = slprintf(buf, SAPI_CGI_MAX_HEADER_LENGTH, 
"%s\r\n", SG(sapi_headers).http_status_line);
+                       if ((s = strchr(SG(sapi_headers).http_status_line, ' 
'))) {
+                               response_status = atoi((s + 1));
+                       }
 
                        if (len > SAPI_CGI_MAX_HEADER_LENGTH) {
                                len = SAPI_CGI_MAX_HEADER_LENGTH;
@@ -402,6 +407,7 @@
                                strncasecmp(SG(sapi_headers).http_status_line, 
"HTTP/", 5) == 0
                        ) {
                                len = slprintf(buf, sizeof(buf), 
"Status:%s\r\n", s);
+                               response_status = atoi((s + 1));
                        } else {
                                h = 
(sapi_header_struct*)zend_llist_get_first_ex(&sapi_headers->headers, &pos);
                                while (h) {
@@ -446,6 +452,9 @@
                                        PHPWRITE_H(h->header, h->header_len);
                                        PHPWRITE_H("\r\n", 2);
                                }
+                       } else if (response_status == 304 && h->header_len > 
sizeof("Content-Type:")-1 && 
+                                       strncasecmp(h->header, "Content-Type:", 
sizeof("Content-Type:")-1) == 0) {
+                               continue;
                        } else {
                                PHPWRITE_H(h->header, h->header_len);
                                PHPWRITE_H("\r\n", 2);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to