summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--sapi/cli/php_cli_server.c2
-rw-r--r--sapi/cli/tests/bug67429.phpt49
3 files changed, 55 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index bd82caeb9f..1adc56b15f 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,10 @@ PHP NEWS
. Fixed bug #67428 (header('Location: foo') will override a 308-399 response
code). (Adam)
+- CLI server:
+ . Implemented FR #67429 (CLI server is missing some new HTTP response codes).
+ (Adam)
+
- Fileinfo:
. Fixed bug #67410 (fileinfo: mconvert incorrect handling of truncated pascal
string size). (Francisco Alonso, Jan Kaluza, Remi)
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 39c3108bc7..64cca0eb6f 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -223,6 +223,7 @@ static php_cli_server_http_response_status_code_pair status_map[] = {
{ 304, "Not Modified" },
{ 305, "Use Proxy" },
{ 307, "Temporary Redirect" },
+ { 308, "Permanent Redirect" },
{ 400, "Bad Request" },
{ 401, "Unauthorized" },
{ 402, "Payment Required" },
@@ -241,6 +242,7 @@ static php_cli_server_http_response_status_code_pair status_map[] = {
{ 415, "Unsupported Media Type" },
{ 416, "Requested Range Not Satisfiable" },
{ 417, "Expectation Failed" },
+ { 426, "Upgrade Required" },
{ 428, "Precondition Required" },
{ 429, "Too Many Requests" },
{ 431, "Request Header Fields Too Large" },
diff --git a/sapi/cli/tests/bug67429.phpt b/sapi/cli/tests/bug67429.phpt
new file mode 100644
index 0000000000..856946b29d
--- /dev/null
+++ b/sapi/cli/tests/bug67429.phpt
@@ -0,0 +1,49 @@
+--TEST--
+FR #67429 (CLI server is missing some new HTTP response codes)
+--SKIPIF--
+<?php
+include "skipif.inc";
+?>
+--FILE--
+<?php
+include "php_cli_server.inc";
+
+foreach ([308, 426] as $code) {
+ php_cli_server_start(<<<PHP
+http_response_code($code);
+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
+
+
+HEADER
+ )) {
+ while (!feof($fp)) {
+ echo fgets($fp);
+ }
+ }
+
+ fclose($fp);
+}
+?>
+--EXPECTF--
+HTTP/1.1 308 Permanent Redirect
+Connection: close
+X-Powered-By: %s
+Content-type: text/html; charset=UTF-8
+
+HTTP/1.1 426 Upgrade Required
+Connection: close
+X-Powered-By: %s
+Content-type: text/html; charset=UTF-8
+