It provides powerful request functionality with support for
parallel requests.
-Documentation:
-v1: http://php.net/http
-v2: http://devel-m6w6.rhcloud.com/mdref/http
-
-Code Coverage:
-v1: http://dev.iworks.at/ext-http/lcov_html/ext/http/
-v2: http://dev.iworks.at/ext-http/lcov/ext/http/
+http://devel-m6w6.rhcloud.com/mdref/http
]]></description>
<lead>
<email>mike@php.net</email>
<active>yes</active>
</lead>
- <date>2015-01-27</date>
+ <date>2014-12-17</date>
<version>
- <release>2.3.0</release>
- <api>2.3.0</api>
+ <release>3.0.0dev</release>
+ <api>3.0.0</api>
</version>
<stability>
<release>beta</release>
</stability>
<license>BSD, revised</license>
<notes><![CDATA[
-+ Preliminiary HTTP2 support (libcurl with nghttp2 support)
++ Preliminiary HTTP2 support for http\Client (libcurl with nghttp2 support)
+ Improved performance of HTTP info parser (request/response line)
+ Improved performance of updating client observers
+ Improved performance of http\Env\Response output to streams
++ Improved the error messages of the header parser
++ Added http\Header\Parser class
+ Added http\Client::configure() method accepting an array with the following options for libcurl:
. maxconnects (int, size of the connection cache)
. max_host_connections (int, max number of connections to a single host, libcurl >= 7.30.0)
+ Added http\Client\Curl\HTTP_VERSION_2_0 constant (libcurl >= 7.33.0)
+ Added http\Client\Curl\TLS_AUTH_SRP constant (libcurl >= 7.21.4)
+ Added pinned_publickey SSL request option (libcurl >= 7.39.0)
-+ Added tlsauth SSL request option (libcurl >= 7.21.4)
++ Added tlsauthtype, tlsauthuser and tlsauthpass SSL request option (libcurl >= 7.21.4)
+ Added verifystatus (a.k.a OCSP) SSL request option (libcurl >= 7.41.0)
+ Added proxyheader request option (libcurl >= 7.37.0)
+ Added unix_socket_path request option (libcurl >= 7.40.0)
* Fixed compress request option
-* Fixed parsing authroities of CONNECT messages
+* Fixed parsing authorities of CONNECT messages
* Fixed parsing Content-Range messages
* Fixed http\Env\Response to default to chunked encoding over streams
* Fixed superfluous output of Content-Length:0 headers
* Fixed persistent easy handles to be only created for persistent multi handles
+* Fixed the header parser to accept not-yet-complete header lines
+* Fixed http\Message::toStream() crash in ZTS mode
+* Fixed the message stream parser to handle intermediary data bigger than 4k
+* Fixed the message stream parser to handle single header lines without EOL
+* Fixed http\Message\Body to not generate stat based etags for temporary streams
- Deprecated http\Client::enablePipelining(), use http\Client::configure(["pipelining" => true]) instead
- Deprecated http\Client::enableEvents(), use http\Client::configure(["use_eventloop" => true]) instead
- Removed the cookies entry from the transfer info, wich was very slow and generated a Netscape formatted list of cookies
+- Changed the header parser to reject illegal characters
]]></notes>
<contents>
<dir name="/">
<file role="src" name="php_http_params.h"/>
<file role="src" name="php_http_querystring.c"/>
<file role="src" name="php_http_querystring.h"/>
- <file role="src" name="php_http_strlist.c"/>
- <file role="src" name="php_http_strlist.h"/>
+ <file role="src" name="php_http_response_codes.h"/>
<file role="src" name="php_http_url.c"/>
<file role="src" name="php_http_url.h"/>
<file role="src" name="php_http_utf8.h"/>
<file role="test" name="client023.phpt"/>
<file role="test" name="client024.phpt"/>
<file role="test" name="client025.phpt"/>
+ <file role="test" name="client026.phpt"/>
<file role="test" name="clientrequest001.phpt"/>
<file role="test" name="clientrequest002.phpt"/>
<file role="test" name="clientrequest003.phpt"/>
<file role="test" name="envresponse015.phpt"/>
<file role="test" name="envresponse016.phpt"/>
<file role="test" name="envresponse017.phpt"/>
+ <file role="test" name="envresponse018.phpt"/>
<file role="test" name="envresponsebody001.phpt"/>
<file role="test" name="envresponsebody002.phpt"/>
<file role="test" name="envresponsecodes.phpt"/>
<file role="test" name="header007.phpt"/>
<file role="test" name="header008.phpt"/>
<file role="test" name="header009.phpt"/>
+ <file role="test" name="headerparser001.phpt"/>
+ <file role="test" name="headerparser002.phpt"/>
+ <file role="test" name="headerparser003.phpt"/>
<file role="test" name="info001.phpt"/>
<file role="test" name="info002.phpt"/>
<file role="test" name="message001.phpt"/>
<file role="test" name="urlparser008.phpt"/>
<file role="test" name="urlparser009.phpt"/>
<file role="test" name="urlparser010.phpt"/>
+ <file role="test" name="urlparser011.phpt"/>
<file role="test" name="version001.phpt"/>
</dir>
</dir>