summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2014-07-07 20:45:01 +0000
committerAdam Harvey <aharvey@php.net>2014-07-07 20:45:01 +0000
commit70e9d3e2f9d7bc0b48811f01c084f82524af604c (patch)
treeca17b6b646a9b4af6c95e349b5cb602d81888f70
parent41448bff7cd00623f7b43e9aff0a443e7731e93b (diff)
parent1939b34c788c57de452b3cf1540182d08ff8f1ad (diff)
downloadphp-git-70e9d3e2f9d7bc0b48811f01c084f82524af604c.tar.gz
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5: Fixed bug #66830 (Empty header causes PHP built-in web server to hang).
-rw-r--r--NEWS4
-rw-r--r--sapi/cli/php_cli_server.c7
-rw-r--r--sapi/cli/tests/bug66830.phpt43
3 files changed, 50 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index a717429605..b5c9654117 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,10 @@ PHP NEWS
generator). (Nikita)
. Fixed bug #67151 (strtr with empty array crashes). (Nikita)
+- CLI server:
+ . Fixed bug #66830 (Empty header causes PHP built-in web server to hang).
+ (Adam)
+
- Intl:
. Fixed bug #66921 (Wrong argument type hint for function
intltz_from_date_time_zone). (Stas)
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 64cca0eb6f..9239f6a02c 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -666,11 +666,10 @@ static int sapi_cli_server_send_headers(sapi_headers_struct *sapi_headers TSRMLS
h = (sapi_header_struct*)zend_llist_get_first_ex(&sapi_headers->headers, &pos);
while (h) {
- if (!h->header_len) {
- continue;
+ if (h->header_len) {
+ smart_str_appendl(&buffer, h->header, h->header_len);
+ smart_str_appendl(&buffer, "\r\n", 2);
}
- smart_str_appendl(&buffer, h->header, h->header_len);
- smart_str_appendl(&buffer, "\r\n", 2);
h = (sapi_header_struct*)zend_llist_get_next_ex(&sapi_headers->headers, &pos);
}
smart_str_appendl(&buffer, "\r\n", 2);
diff --git a/sapi/cli/tests/bug66830.phpt b/sapi/cli/tests/bug66830.phpt
new file mode 100644
index 0000000000..58c07e031a
--- /dev/null
+++ b/sapi/cli/tests/bug66830.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Bug #66830 (Empty header causes PHP built-in web server to hang)
+--SKIPIF--
+<?php
+include "skipif.inc";
+?>
+--FILE--
+<?php
+include "php_cli_server.inc";
+php_cli_server_start(<<<'PHP'
+header(' ');
+PHP
+);
+
+list($host, $port) = explode(':', PHP_CLI_SERVER_ADDRESS);
+$port = intval($port)?:80;
+
+$fp = fsockopen($host, $port, $errno, $errstr, 0.5);
+if (!$fp) {
+ die("connect failed");
+}
+
+if(fwrite($fp, <<<HEADER
+GET / HTTP/1.1
+Host: {$host}
+
+
+HEADER
+)) {
+ while (!feof($fp)) {
+ echo fgets($fp);
+ }
+}
+
+fclose($fp);
+?>
+--EXPECTF--
+HTTP/1.1 200 OK
+Host: %s
+Connection: close
+X-Powered-By: %s
+Content-type: text/html; charset=UTF-8
+