From 4a9f80fd559e0d2cecfe4c1053467085ceb59f32 Mon Sep 17 00:00:00 2001 From: Niklas Lindgren Date: Tue, 11 Sep 2012 15:47:44 +0300 Subject: [PATCH 1/4] Added support for the HTTP PATCH method defined by RFC5789 to the http parser --- sapi/cli/php_http_parser.c | 3 +++ sapi/cli/php_http_parser.h | 1 + 2 files changed, 4 insertions(+) diff --git a/sapi/cli/php_http_parser.c b/sapi/cli/php_http_parser.c index 13b9ea12bcd1a..c9ee2a57b47b8 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" @@ -626,6 +627,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 7e72b78d7db92..c5a0ff5f3033c 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 From 50358ea11985dc621595ee39a0a183f289b7b224 Mon Sep 17 00:00:00 2001 From: Niklas Lindgren Date: Tue, 11 Sep 2012 16:25:19 +0300 Subject: [PATCH 2/4] Added test for HTTP PATCH method support --- sapi/cli/tests/php_cli_server_018.phpt | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sapi/cli/tests/php_cli_server_018.phpt 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 0000000000000..deb93487687a1 --- /dev/null +++ b/sapi/cli/tests/php_cli_server_018.phpt @@ -0,0 +1,44 @@ +--TEST-- +Implement Req #61679 (Support HTTP PATCH method) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +HTTP/1.1 200 OK +Host: %s +Connection: close +X-Powered-By: %s +Content-type: text/html + +string(5) "PATCH" From 4d4a0dfbe89c0c26ce7960ead16ffcd2e09b1338 Mon Sep 17 00:00:00 2001 From: Niklas Lindgren Date: Tue, 11 Sep 2012 15:47:44 +0300 Subject: [PATCH 3/4] Added support for the HTTP PATCH method --- sapi/cli/php_http_parser.c | 3 +++ sapi/cli/php_http_parser.h | 1 + 2 files changed, 4 insertions(+) diff --git a/sapi/cli/php_http_parser.c b/sapi/cli/php_http_parser.c index 13b9ea12bcd1a..c9ee2a57b47b8 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" @@ -626,6 +627,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 7e72b78d7db92..c5a0ff5f3033c 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 From df549d927d0468476fa1bb923d6b8a3df5afa6b7 Mon Sep 17 00:00:00 2001 From: Niklas Lindgren Date: Tue, 11 Sep 2012 16:25:19 +0300 Subject: [PATCH 4/4] Added test for HTTP PATCH method support --- sapi/cli/tests/php_cli_server_018.phpt | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sapi/cli/tests/php_cli_server_018.phpt 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 0000000000000..deb93487687a1 --- /dev/null +++ b/sapi/cli/tests/php_cli_server_018.phpt @@ -0,0 +1,44 @@ +--TEST-- +Implement Req #61679 (Support HTTP PATCH method) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +HTTP/1.1 200 OK +Host: %s +Connection: close +X-Powered-By: %s +Content-type: text/html + +string(5) "PATCH"