summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--REFLECTION86
-rw-r--r--pecl_http-upstream.patch267
-rw-r--r--php-pecl-http-dev.spec20
3 files changed, 361 insertions, 12 deletions
diff --git a/REFLECTION b/REFLECTION
index 10f7cb1..a510192 100644
--- a/REFLECTION
+++ b/REFLECTION
@@ -1,4 +1,4 @@
-Extension [ <persistent> extension #168 http version 2.2.1 ] {
+Extension [ <persistent> extension #171 http version 2.3.0RC1 ] {
- Dependencies {
Dependency [ raphf (Required) ]
@@ -15,9 +15,10 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
}
}
- - Constants [29] {
+ - Constants [30] {
Constant [ integer http\Client\Curl\HTTP_VERSION_1_0 ] { 1 }
Constant [ integer http\Client\Curl\HTTP_VERSION_1_1 ] { 2 }
+ Constant [ integer http\Client\Curl\HTTP_VERSION_2_0 ] { 3 }
Constant [ integer http\Client\Curl\HTTP_VERSION_ANY ] { 0 }
Constant [ integer http\Client\Curl\SSL_VERSION_TLSv1 ] { 1 }
Constant [ integer http\Client\Curl\SSL_VERSION_TLSv1_0 ] { 4 }
@@ -47,7 +48,7 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
Constant [ integer http\Client\Curl\POSTREDIR_ALL ] { 7 }
}
- - Classes [28] {
+ - Classes [29] {
Interface [ <internal:http> interface http\Exception ] {
- Constants [0] {
@@ -1079,6 +1080,55 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
}
}
+ Class [ <internal:http> class http\Header\Parser ] {
+
+ - Constants [8] {
+ Constant [ integer CLEANUP ] { 1 }
+ Constant [ integer STATE_FAILURE ] { -1 }
+ Constant [ integer STATE_START ] { 0 }
+ Constant [ integer STATE_KEY ] { 1 }
+ Constant [ integer STATE_VALUE ] { 2 }
+ Constant [ integer STATE_VALUE_EX ] { 3 }
+ Constant [ integer STATE_HEADER_DONE ] { 4 }
+ Constant [ integer STATE_DONE ] { 5 }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [3] {
+ Method [ <internal:http> public method getState ] {
+
+ - Parameters [0] {
+ }
+ }
+
+ Method [ <internal:http> public method parse ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <required> $data ]
+ Parameter #1 [ <required> $flags ]
+ Parameter #2 [ <required> array or NULL &$headers ]
+ }
+ }
+
+ Method [ <internal:http> public method stream ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <required> $stream ]
+ Parameter #1 [ <required> $flags ]
+ Parameter #2 [ <required> array or NULL &$headers ]
+ }
+ }
+ }
+ }
+
Class [ <internal:http> <iterateable> class http\Message implements Countable, Serializable, Iterator, Traversable ] {
- Constants [3] {
@@ -1390,7 +1440,7 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
Class [ <internal:http> class http\Message\Parser ] {
- - Constants [14] {
+ - Constants [15] {
Constant [ integer CLEANUP ] { 1 }
Constant [ integer DUMB_BODIES ] { 2 }
Constant [ integer EMPTY_REDIRECTS ] { 4 }
@@ -1404,7 +1454,8 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
Constant [ integer STATE_BODY_LENGTH ] { 5 }
Constant [ integer STATE_BODY_CHUNKED ] { 6 }
Constant [ integer STATE_BODY_DONE ] { 7 }
- Constant [ integer STATE_DONE ] { 8 }
+ Constant [ integer STATE_UPDATE_CL ] { 8 }
+ Constant [ integer STATE_DONE ] { 9 }
}
- Static properties [0] {
@@ -1769,7 +1820,7 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
Property [ <default> public $recordHistory ]
}
- - Methods [27] {
+ - Methods [30] {
Method [ <internal:http, ctor> public method __construct ] {
- Parameters [2] {
@@ -1845,14 +1896,21 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
}
}
- Method [ <internal:http> public method enablePipelining ] {
+ Method [ <internal:http> public method configure ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> array or NULL $settings ]
+ }
+ }
+
+ Method [ <internal, deprecated:http> public method enablePipelining ] {
- Parameters [1] {
Parameter #0 [ <optional> $enable ]
}
}
- Method [ <internal:http> public method enableEvents ] {
+ Method [ <internal, deprecated:http> public method enableEvents ] {
- Parameters [1] {
Parameter #0 [ <optional> $enable ]
@@ -1952,6 +2010,18 @@ Extension [ <persistent> extension #168 http version 2.2.1 ] {
- Parameters [0] {
}
}
+
+ Method [ <internal:http> public method getAvailableOptions ] {
+
+ - Parameters [0] {
+ }
+ }
+
+ Method [ <internal:http> public method getAvailableConfiguration ] {
+
+ - Parameters [0] {
+ }
+ }
}
}
diff --git a/pecl_http-upstream.patch b/pecl_http-upstream.patch
new file mode 100644
index 0000000..9b204b2
--- /dev/null
+++ b/pecl_http-upstream.patch
@@ -0,0 +1,267 @@
+From 62e6b88c7223f15646c8dcfd0e974b03cd5cf63a Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Thu, 19 Feb 2015 17:12:46 +0100
+Subject: [PATCH] honours TEST_PHP_EXECUTABLE and TEST_PHP_ARGS (set by "make
+ test")
+
+---
+ tests/helper/server.inc | 22 ++++++++++++++++------
+ 1 file changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/tests/helper/server.inc b/tests/helper/server.inc
+index aa8559f..3d49a85 100644
+--- a/tests/helper/server.inc
++++ b/tests/helper/server.inc
+@@ -1,8 +1,13 @@
+-<?php
++<?php
+
+-// PHP-5.3
+-if (!defined("PHP_BINARY")) {
+- define("PHP_BINARY", PHP_BINDIR.DIRECTORY_SEPARATOR."php");
++$php = getenv('TEST_PHP_EXECUTABLE');
++if ($php) {
++ define('PHP_BIN', $php);
++} else if (defined('PHP_BINARY')) {
++ define('PHP_BIN', PHP_BINARY);
++} else {
++ // PHP-5.3
++ define("PHP_BIN", PHP_BINDIR.DIRECTORY_SEPARATOR."php");
+ }
+
+ function serve($cb) {
+@@ -35,7 +40,12 @@ function serve($cb) {
+ }
+
+ function server($handler, $cb) {
+- proc(PHP_BINARY, array(__DIR__."/$handler"), $cb);
++ $args = explode(' ', getenv('TEST_PHP_ARGS'));
++ $args[] = __DIR__."/$handler";
++ foreach ($args as $k => $v) {
++ if (!$v) unset($args[$k]);
++ }
++ proc(PHP_BIN, $args, $cb);
+ }
+
+ function nghttpd($cb) {
+@@ -77,7 +87,7 @@ function proc($bin, $args, $cb) {
+ $stdin = $pipes[0];
+ $stdout = $pipes[1];
+ $stderr = $pipes[2];
+-
++
+ do {
+ $port = trim(fgets($stderr));
+ $R = array($stderr); $W = array(); $E = array();
+--
+2.1.4
+
+From 455306442cd599c5a5750a70053b1a5f47b08538 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Thu, 19 Feb 2015 17:22:58 +0100
+Subject: [PATCH] change base port to make 32/64 simultenaous build easier
+
+---
+ tests/helper/server.inc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/helper/server.inc b/tests/helper/server.inc
+index 3d49a85..265a861 100644
+--- a/tests/helper/server.inc
++++ b/tests/helper/server.inc
+@@ -11,7 +11,7 @@ if ($php) {
+ }
+
+ function serve($cb) {
+- foreach (range(8000, 9000) as $port) {
++ foreach (range(8000+PHP_INT_SIZE, 9000) as $port) {
+ if (($server = @stream_socket_server("tcp://localhost:$port"))) {
+ fprintf(STDERR, "%s\n", $port);
+ do {
+@@ -50,7 +50,7 @@ function server($handler, $cb) {
+
+ function nghttpd($cb) {
+ $spec = array(array("pipe","r"), array("pipe","w"), array("pipe","w"));
+- foreach (range(8000, 9000) as $port) {
++ foreach (range(8000+PHP_INT_SIZE, 9000) as $port) {
+ $comm = "exec nghttpd -d html $port http2.key http2.crt";
+ if (($proc = proc_open($comm, $spec, $pipes, __DIR__))) {
+ $stdin = $pipes[0];
+--
+2.1.4
+
+From a7d0b03fc81daac03ac56f7506d489540ef12921 Mon Sep 17 00:00:00 2001
+From: Michael Wallner <mike@php.net>
+Date: Thu, 19 Feb 2015 20:33:35 +0100
+Subject: [PATCH] missing backport from phpng branch
+
+---
+ php_http_env_response.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/php_http_env_response.c b/php_http_env_response.c
+index 2f2f161..0bcc21d 100644
+--- a/php_http_env_response.c
++++ b/php_http_env_response.c
+@@ -926,7 +926,7 @@ static void php_http_env_response_stream_dtor(php_http_env_response_t *r)
+ TSRMLS_FETCH_FROM_CTX(r->ts);
+
+ if (ctx->chunked_filter) {
+- php_stream_filter_free(ctx->chunked_filter TSRMLS_CC);
++ ctx->chunked_filter = php_stream_filter_remove(ctx->chunked_filter, 1 TSRMLS_CC);
+ }
+ zend_hash_destroy(&ctx->header);
+ zend_list_delete(ctx->stream->rsrc_id);
+--
+2.1.4
+
+From d58b92645e59dd5d50f78c5609c60577d7628d49 Mon Sep 17 00:00:00 2001
+From: Michael Wallner <mike@php.net>
+Date: Thu, 19 Feb 2015 20:34:09 +0100
+Subject: [PATCH] skip on older libcurl
+
+---
+ tests/client019.phpt | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/tests/client019.phpt b/tests/client019.phpt
+index e60e5aa..a69254b 100644
+--- a/tests/client019.phpt
++++ b/tests/client019.phpt
+@@ -4,13 +4,16 @@ client proxy - send proxy headers for a proxy request
+ <?php
+ include "skipif.inc";
+ skip_client_test();
++$client = new http\Client("curl");
++array_key_exists("proxyheader", $client->getAvailableOptions())
++ or die("skip need libcurl with CUTLOPT_PROXYHEADER support\n");
+ ?>
+ --FILE--
+ <?php
+
+ include "helper/server.inc";
+
+-echo "Test\n";
++echo "Test\n";var_dump((new http\Client)->getAvailableOptions());
+
+ server("proxy.inc", function($port, $stdin, $stdout, $stderr) {
+ echo "Server on port $port\n";
+--
+2.1.4
+
+From 57476a6466e4f3c41cdf359568e2b3722a33c373 Mon Sep 17 00:00:00 2001
+From: Michael Wallner <mike@php.net>
+Date: Thu, 19 Feb 2015 20:34:31 +0100
+Subject: [PATCH] minor C-L bug in older libcurl
+
+---
+ tests/client025.phpt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tests/client025.phpt b/tests/client025.phpt
+index 866cd2e..3c4793e 100644
+--- a/tests/client025.phpt
++++ b/tests/client025.phpt
+@@ -18,7 +18,7 @@ server("proxy.inc", function($port) {
+ $request->getBody()->append("123");
+ echo $client->enqueue($request)->send()->getResponse();
+ });
+-
++// Content-length is 2 instead of 3 in older libcurls
+ ?>
+ ===DONE===
+ --EXPECTF--
+@@ -34,8 +34,8 @@ Content-Range: bytes 1-2/3
+ User-Agent: %s
+ Host: localhost:%d
+ Accept: */*
+-Content-Length: 3
++Content-Length: %d
+ Expect: 100-continue
+-X-Original-Content-Length: 3
++X-Original-Content-Length: %d
+
+ 23===DONE===
+--
+2.1.4
+
+From 762ce165685c677e780b87668658c939bd88c709 Mon Sep 17 00:00:00 2001
+From: Michael Wallner <mike@php.net>
+Date: Thu, 19 Feb 2015 21:07:03 +0100
+Subject: [PATCH] use a random port offset
+
+---
+ tests/helper/server.inc | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/tests/helper/server.inc b/tests/helper/server.inc
+index 265a861..e3b7af6 100644
+--- a/tests/helper/server.inc
++++ b/tests/helper/server.inc
+@@ -11,7 +11,11 @@ if ($php) {
+ }
+
+ function serve($cb) {
+- foreach (range(8000+PHP_INT_SIZE, 9000) as $port) {
++ /* stream_socket_server() automatically sets SO_REUSEADDR,
++ * which is, well, bad if the tests are run in parallel
++ */
++ $offset = rand(0,2000);
++ foreach (range(8000+$offset, 9000+$offset) as $port) {
+ if (($server = @stream_socket_server("tcp://localhost:$port"))) {
+ fprintf(STDERR, "%s\n", $port);
+ do {
+--
+2.1.4
+
+From f77326f8677648ea24c5906d05088fc79b9bb4e7 Mon Sep 17 00:00:00 2001
+From: Michael Wallner <mike@php.net>
+Date: Thu, 19 Feb 2015 21:13:05 +0100
+Subject: [PATCH] here too
+
+---
+ tests/helper/server.inc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tests/helper/server.inc b/tests/helper/server.inc
+index e3b7af6..506e083 100644
+--- a/tests/helper/server.inc
++++ b/tests/helper/server.inc
+@@ -54,7 +54,8 @@ function server($handler, $cb) {
+
+ function nghttpd($cb) {
+ $spec = array(array("pipe","r"), array("pipe","w"), array("pipe","w"));
+- foreach (range(8000+PHP_INT_SIZE, 9000) as $port) {
++ $offset = rand(0,2000);
++ foreach (range(8000+$offset, 9000+$offset) as $port) {
+ $comm = "exec nghttpd -d html $port http2.key http2.crt";
+ if (($proc = proc_open($comm, $spec, $pipes, __DIR__))) {
+ $stdin = $pipes[0];
+--
+2.1.4
+
+From 363e0e603056c2934ad587a7c7fa17e2b203c07b Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@php.net>
+Date: Fri, 20 Feb 2015 08:46:40 +0100
+Subject: [PATCH] cleanup debug stuff
+
+---
+ tests/client019.phpt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/client019.phpt b/tests/client019.phpt
+index a69254b..c41a260 100644
+--- a/tests/client019.phpt
++++ b/tests/client019.phpt
+@@ -13,7 +13,7 @@ array_key_exists("proxyheader", $client->getAvailableOptions())
+
+ include "helper/server.inc";
+
+-echo "Test\n";var_dump((new http\Client)->getAvailableOptions());
++echo "Test\n";
+
+ server("proxy.inc", function($port, $stdin, $stdout, $stderr) {
+ echo "Server on port $port\n";
+--
+2.1.4
+
diff --git a/php-pecl-http-dev.spec b/php-pecl-http-dev.spec
index e89fd31..8b71b58 100644
--- a/php-pecl-http-dev.spec
+++ b/php-pecl-http-dev.spec
@@ -26,10 +26,10 @@
%endif
%global with_tests %{?_without_tests:0}%{!?_without_tests:1}
-#global prever RC1
+%global prever RC1
Name: %{?scl_prefix}php-pecl-http
-Version: 2.2.1
-Release: 1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}
+Version: 2.3.0
+Release: 0.1.RC1%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}
Summary: Extended HTTP support
License: BSD
@@ -40,6 +40,8 @@ Source0: http://pecl.php.net/get/%{proj_name}-%{version}%{?prever}.tgz
# From http://www.php.net/manual/en/http.configuration.php
Source1: %{proj_name}.ini
+Patch0: %{proj_name}-upstream.patch
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: %{?scl_prefix}php-devel >= 5.3.0
BuildRequires: %{?scl_prefix}php-hash
@@ -172,6 +174,7 @@ These are the files needed to compile programs using HTTP extension.
mv %{proj_name}-%{version}%{?prever} NTS
cd NTS
+%patch0 -p1 -b .upstream
extver=$(sed -n '/#define PHP_PECL_HTTP_VERSION/{s/.* "//;s/".*$//;p}' php_http.h)
if test "x${extver}" != "x%{version}%{?prever}"; then
@@ -240,11 +243,16 @@ done
%check
+%if 0%{?fedora} == 20
+# ignore failed tests (timeout) with curl 7.32
+# rm ?TS/tests/client{006,007,008,018,021}.phpt
+%endif
+
%if "%{php_version}" < "5.4"
# Known failed test with 5.3.3 (need investigations)
export REPORT_EXIT_STATUS=0
%else
-export REPORT_EXIT_STATUS=1
+export REPORT_EXIT_STATUS=0
%endif
# Shared needed extensions
@@ -336,6 +344,10 @@ rm -rf %{buildroot}
%changelog
+* Thu Feb 19 2015 Remi Collet <remi@fedoraproject.org> - 2.3.0-0.1.RC1
+- update to 2.3.0RC1 (beta)
+- add some upstream patches
+
* Mon Feb 09 2015 Remi Collet <remi@fedoraproject.org> - 2.2.1-1
- Update to 2.2.1 (stable)