iliaa Fri Oct 17 01:34:27 2008 UTC
Modified files:
/php-src/sapi/cgi cgi_main.c
Log:
MFB: 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.365&r2=1.366&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.365 php-src/sapi/cgi/cgi_main.c:1.366
--- php-src/sapi/cgi/cgi_main.c:1.365 Tue Sep 2 13:22:27 2008
+++ php-src/sapi/cgi/cgi_main.c Fri Oct 17 01:34:26 2008
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cgi_main.c,v 1.365 2008/09/02 13:22:27 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.366 2008/10/17 01:34:26 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 = snprintf(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) {
@@ -447,6 +453,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