com php-src: Merged GitHub PR #190: Support for the HTTP PATCH method in CLI webserver: NEWS sapi/cli/php_http_parser.c sapi/cli /php_http_parser.h
sapi/cli/tests/php_cli_server_ 018.phpt
| From: | Lars Strojny | Date: | Tue, 18 Sep 2012 20:16:51 +0000 |
| Subject: | com php-src: Merged GitHub PR #190: Support for the HTTP PATCH method in CLI webserver: NEWS sapi/cli/php_http_parser.c sapi/cli /php_http_parser.h sapi/cli/tests/php_cli_server_ 018.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-70194@lists.php.net to get a copy of this message | ||
Commit: aa133ea2821787c0cf4ac8750ddd22341752f135
Author: Lars Strojny <lstrojny@php.net> Tue, 18 Sep 2012 22:16:51 +0200
Parents: 1e1db9d9bb8dffc9421d8d8ac0eeafcf33389d26
Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=aa133ea2821787c0cf4ac8750ddd22341752f135
Log:
Merged GitHub PR #190: Support for the HTTP PATCH method in CLI webserver
Bugs:
https://bugs.php.net/190
Changed paths:
M NEWS
M sapi/cli/php_http_parser.c
M sapi/cli/php_http_parser.h
A sapi/cli/tests/php_cli_server_018.phpt
Diff:
diff --git a/NEWS b/NEWS
index 339d681..e769b35 100644
--- a/NEWS
+++ b/NEWS
@@ -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 4a95f82..d3bc496 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 0f6c13d..2bf2356 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 0000000..deb9348
--- /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"