diff options
author | Lars Strojny <lstrojny@php.net> | 2012-09-18 22:16:51 +0200 |
---|---|---|
committer | Lars Strojny <lstrojny@php.net> | 2012-09-18 22:16:51 +0200 |
commit | aa133ea2821787c0cf4ac8750ddd22341752f135 (patch) | |
tree | 7351c6f7b359cfd8eccfb3bb778f452c1b664ba7 | |
parent | 1e1db9d9bb8dffc9421d8d8ac0eeafcf33389d26 (diff) | |
download | php-git-aa133ea2821787c0cf4ac8750ddd22341752f135.tar.gz |
Merged GitHub PR #190: Support for the HTTP PATCH method in CLI webserver
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sapi/cli/php_http_parser.c | 3 | ||||
-rw-r--r-- | sapi/cli/php_http_parser.h | 1 | ||||
-rw-r--r-- | sapi/cli/tests/php_cli_server_018.phpt | 44 |
4 files changed, 50 insertions, 0 deletions
@@ -5,6 +5,8 @@ PHP NEWS - CLI server: . Changed response to unknown HTTP method to 501 according to RFC. (Niklas Lindgren). + . Support HTTP PATCH method. Patch by Niklas Lindgren, GitHub PR #190. + (Lars) - Core: . Added optional second argument for assert() to specify custom message. Patch diff --git a/sapi/cli/php_http_parser.c b/sapi/cli/php_http_parser.c index 4a95f82575..d3bc496f4e 100644 --- a/sapi/cli/php_http_parser.c +++ b/sapi/cli/php_http_parser.c @@ -81,6 +81,7 @@ static const char *method_strings[] = , "HEAD" , "POST" , "PUT" + , "PATCH" , "CONNECT" , "OPTIONS" , "TRACE" @@ -627,6 +628,8 @@ size_t php_http_parser_execute (php_http_parser *parser, parser->method = PHP_HTTP_PROPFIND; /* or HTTP_PROPPATCH */ } else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'U') { parser->method = PHP_HTTP_PUT; + } else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'A') { + parser->method = PHP_HTTP_PATCH; } else if (index == 2 && parser->method == PHP_HTTP_UNLOCK && ch == 'S') { parser->method = PHP_HTTP_UNSUBSCRIBE; } else if (index == 4 && parser->method == PHP_HTTP_PROPFIND && ch == 'P') { diff --git a/sapi/cli/php_http_parser.h b/sapi/cli/php_http_parser.h index 0f6c13dd35..2bf2356725 100644 --- a/sapi/cli/php_http_parser.h +++ b/sapi/cli/php_http_parser.h @@ -80,6 +80,7 @@ enum php_http_method , PHP_HTTP_HEAD , PHP_HTTP_POST , PHP_HTTP_PUT + , PHP_HTTP_PATCH /* pathological */ , PHP_HTTP_CONNECT , PHP_HTTP_OPTIONS diff --git a/sapi/cli/tests/php_cli_server_018.phpt b/sapi/cli/tests/php_cli_server_018.phpt new file mode 100644 index 0000000000..deb9348768 --- /dev/null +++ b/sapi/cli/tests/php_cli_server_018.phpt @@ -0,0 +1,44 @@ +--TEST-- +Implement Req #61679 (Support HTTP PATCH method) +--SKIPIF-- +<?php +include "skipif.inc"; +?> +--FILE-- +<?php +include "php_cli_server.inc"; +php_cli_server_start(<<<'PHP' +var_dump($_SERVER['REQUEST_METHOD']); +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 +PATCH / 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 + +string(5) "PATCH" |