| Changelog for pecl_http | 
                
                                    
                        | Release | 
                        What has changed? | 
                    
                                            
                                                    
                                | 4.3.1 | 
                                
                                    > NOTE: Fixed git tag 
* Fix PHP-8.5 compatibility (#150, #149, #148) 
* Fix GCC-15 compatibility (#143) 
* Add new curl options: default_protocol, protocols, redir_protocols (#146) 
* Add recent curl info and options up to v8.12 (c08b957)                                 | 
                            
                                                                    
                                                    
                                | 4.3.0 | 
                                
                                    * Fix PHP-8.5 compatibility (#150, #149, #148) 
* Fix GCC-15 compatibility (#143) 
* Add new curl options: default_protocol, protocols, redir_protocols (#146) 
* Add recent curl info and options up to v8.12 (c08b957)                                 | 
                            
                                                                    
                                                    
                                | 4.2.6 | 
                                
                                    * Fix #136 Potential incompatibility with libcurl 8.9.0; add workaround for CURLOPT_INTERFACE for v8.9-8.10 
* Fix #137 Potential compilation error with PHP 8.4; php_lcg.h was deprecated in 8.2                                 | 
                            
                                                                    
                                                    
                                | 4.2.4 | 
                                
                                    * Fix Error using ssl array in options : Could not set option tlsauthtype 
  (see  gh issue #131) 
* Fix arginfo wargnings of the internal curl client user handler 
* Disable libidn support for v1.36-v1.38 due to broken locale detection                                 | 
                            
                                                                    
                                                    
                                | 4.2.3 | 
                                
                                    * Fix http\Client::requeue() not updating response callback                                 | 
                            
                                                                    
                                                    
                                | 3.3.0 | 
                                
                                    * Fix http\Client::requeue() not updating response callback 
* Backport bug fixes and features from v4: 
  * Fixed configure reliably finding the right libcurl features available 
  * Fixed cookie handling with libcurl 7.77+ and consistently across all 
    supported libcurl versions (follow-up to gh issue #116) 
  * Fixed cookies failing with libcurl >= 7.77 (see gh issue #116) 
  * Fixed tests using $_ENV instead of getenv() to find executables in PATH (see gh issue #113) 
  * Fixed configure on systems which do not provide icu-config 
  * Fixed gh-issue #89: Cookie handling cannot be disabled since v3.2.1 
  * Added http\Env::reset(): resets internal HTTP request cache (see gh issue #90) 
  * Added request options: 
    * http\Client\Curl::$abstract_unix_socket 
    * http\Client\Curl::$altsvc 
    * http\Client\Curl::$altsvc_ctrl 
    * http\Client\Curl::$aws_sigv4 
    * http\Client\Curl::$doh_url 
    * http\Client\Curl::$dns_shuffle_addresses 
    * http\Client\Curl::$haproxy_protocol 
    * http\Client\Curl::$hsts 
    * http\Client\Curl::$hsts_ctrl 
    * http\Client\Curl::$http09_allowed 
    * http\Client\Curl::$maxage_conn 
    * http\Client\Curl::$pinned_publickey 
    * http\Client\Curl::$proxy_ssl 
    * http\Client\Curl::$socks5_auth 
    * http\Client\Curl::$tcp_fastopen 
    * http\Client\Curl::$tls13_ciphers 
    * http\Client\Curl::$xoauth2_bearer 
  * Added request option constants: 
    * http\Client\Curl\AUTH_AWS_SIGV4 
    * http\Client\Curl\AUTH_BEARER 
    * http\Client\Curl\AUTH_NONE 
    * http\Client\Curl\HTTP_VERSION_2_PRIOR_KNOWLEDGE 
    * http\Client\Curl\HTTP_VERSION_3 
    * http\Client\Curl\SSL_VERSION_MAX_* 
    * http\Client\Curl\SSL_VERSION_TLSv1_3 
  * Added library version constants: 
    * http\Client\Curl\Versions\BROTLI 
    * http\Client\Curl\Versions\CAINFO 
    * http\Client\Curl\Versions\CAPATH 
    * http\Client\Curl\Versions\HYPER 
    * http\Client\Curl\Versions\ICONV 
    * http\Client\Curl\Versions\NGHTTP2 
    * http\Client\Curl\Versions\QUIC 
    * http\Client\Curl\Versions\ZSTD                                 | 
                            
                                                                    
                                                    
                                | 4.2.2 | 
                                
                                    * Fixed gh-issue #123: Segfault with libcurl 7.81                                 | 
                            
                                                                    
                                                    
                                | 3.2.5 | 
                                
                                    * Fixed gh-issue #123: Segfault with libcurl 7.81                                 | 
                            
                                                                    
                                                    
                                | 4.2.1 | 
                                
                                    * Fixed failing tests with PHP-8.1 (see gh issue #120) 
* Fixed configure reliably finding the right libcurl features available 
* Fixed cookie handling with libcurl 7.77+ and consistently across all  
  supported libcurl versions (follow-up to gh issue #116)                                 | 
                            
                                                                    
                                                    
                                | 4.2.0 | 
                                
                                    * Fixed PHP-8.1 compatibility (see gh issues #114, #115 and #118) 
* Fixed cookies failing with libcurl >= 7.77 (see gh issue #116) 
* Fixed tests using $_ENV instead of getenv() to find executables in PATH (see gh issue #113) 
* Added http\Env::reset(): resets internal HTTP request cache (see gh issue #90)                                 | 
                            
                                                                    
                                                    
                                | 4.1.0 | 
                                
                                    * Added request options: 
 * http\Client\Curl::$abstract_unix_socket 
 * http\Client\Curl::$altsvc 
 * http\Client\Curl::$altsvc_ctrl 
 * http\Client\Curl::$aws_sigv4 
 * http\Client\Curl::$doh_url 
 * http\Client\Curl::$dns_shuffle_addresses 
 * http\Client\Curl::$haproxy_protocol 
 * http\Client\Curl::$hsts 
 * http\Client\Curl::$hsts_ctrl 
 * http\Client\Curl::$http09_allowed 
 * http\Client\Curl::$maxage_conn 
 * http\Client\Curl::$pinned_publickey 
 * http\Client\Curl::$proxy_ssl 
 * http\Client\Curl::$socks5_auth 
 * http\Client\Curl::$tcp_fastopen 
 * http\Client\Curl::$tls13_ciphers 
 * http\Client\Curl::$xoauth2_bearer 
* Added request option constants: 
 * http\Client\Curl\AUTH_AWS_SIGV4 
 * http\Client\Curl\AUTH_BEARER 
 * http\Client\Curl\AUTH_NONE 
 * http\Client\Curl\HTTP_VERSION_2_PRIOR_KNOWLEDGE 
 * http\Client\Curl\HTTP_VERSION_3 
 * http\Client\Curl\SSL_VERSION_MAX_* 
 * http\Client\Curl\SSL_VERSION_TLSv1_3 
* Added library version constants: 
 * http\Client\Curl\Versions\BROTLI 
 * http\Client\Curl\Versions\CAINFO 
 * http\Client\Curl\Versions\CAPATH 
 * http\Client\Curl\Versions\HYPER 
 * http\Client\Curl\Versions\ICONV 
 * http\Client\Curl\Versions\NGHTTP2 
 * http\Client\Curl\Versions\QUIC 
 * http\Client\Curl\Versions\ZSTD                                 | 
                            
                                                                    
                                                    
                                | 4.0.0 | 
                                
                                    > *NOTE:*   
  v4.x is PHP-8 only. 
 
* PHP 8 compatibility 
  - Drop ext-propro support 
    PHP 8 removes the object get/set API from the ZendEngine, which renders 
    that extension dysfunctional. As a consequence, the header property of 
    http\Message and derived classes cannot be modified in place, and thus 
    by reference. 
 
Changes from beta1: 
* Fixed configure on systems which do not provide icu-config 
* Fixed gh-issue #89: Cookie handling cannot be disabled since v3.2.1                                 | 
                            
                                                                    
                                                    
                                | 3.2.4 | 
                                
                                    * Fixed configure on systems which do not provide icu-config 
* Fixed gh-issue #89: Cookie handling cannot be disabled since v3.2.1                                 | 
                            
                                                                    
                                                    
                                | 4.0.0beta1 | 
                                
                                    >*NOTE:* 
v4.x will be PHP-8 only, v3.x continues PHP-7 support 
 
* PHP 8 compatibility 
  - Drop ext-propro support 
    PHP 8 removes the object get/set API from the ZendEngine, which renders 
    that extension dysfunctional. As a consequence, the header property of 
    http\Message and derived classes cannot be modified in place, and thus 
    by reference.                                 | 
                            
                                                                    
                                                    
                                | 3.2.3 | 
                                
                                    * Fixed Windows build (Jan Ehrhardt)                                 | 
                            
                                                                    
                                                    
                                | 3.2.2 | 
                                
                                    * PHP-7.4 compatibility 
* Fixed gh-issue #92: http\Message\Body::addForm() discards numeric names 
* Fixed gh-issue #95: typo in http\Message::getResponseCode()'s error message                                 | 
                            
                                                                    
                                                    
                                | 3.2.1 | 
                                
                                    * Fixed gh-issue #88: Unable to run test suite (Remi Collet) 
* Fixed gh-issue #86: test failure with curl 7.64 
* Fixed gh-issue #85: [-Wformat-extra-args] build warnings 
* Fixed gh-issue #84: segfault and build failure since curl 7.62 
* Fixed gh-issue #82: Test harness improvements (Chris Wright) 
* Fixed gh-issue #64: compress and connecttimeout interfere with low_speed_limit (@rcanavan) 
* Fixed http\QueryString::getGlobalInstance() 
* Fixed missing 2nd reflection argument info of http\Client::notify() 
* Fixed PHP-7.4 compatibility                                 | 
                            
                                                                    
                                                    
                                | 3.2.0 | 
                                
                                    * Fixed gh-issue #73: build fails with libidn and libidn2 
* Fixed gh-issue #78: PHP-7.3 build crashes 
* Fixed PHP-7.2 build crashes 
+ Added brotli compression support 
+ Implemented gh-issue #58: Notify observers before any request is built                                 | 
                            
                                                                    
                                                    
                                | 3.2.0RC1 | 
                                
                                    * PHP-7.2 compatibility 
* Fixed gh-issue #73: build fails with libidn and libidn2 
+ Added brotli compression support 
+ Implemented gh-issue #58: Notify observers before any request is built                                 | 
                            
                                                                    
                                                    
                                | 3.1.1RC1 | 
                                
                                    * Fix gh-issue #65: http\Client::enqueue(): Could not enqueue request: The easy handle is already added to a multi handle (@rcanavan, Mike) 
* Fix gh-issue #66: SILENT_ERRORS flag not properly passed to parse_mb (@rcanavan, Mike) 
* Fix gh-issue #67: IGNORE_ERRORS should not drop "invalid" characters (@rcanavan, Mike) 
* Fix gh-issue #68 STDFLAGS not fully applied when creating http\Client\Request with URL as string (@rcanavan, Mike) 
* Fixed -Werror builds 
* Fixed big endian builds 
* Fixed builds against libcurl with gnutls, without libz or without ssl support                                 | 
                            
                                                                    
                                                    
                                | 3.1.0 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan) 
 
Changes from beta1: 
* Fixed recursive calls to the event loop dispatcher 
 
Changes from beta2: 
+ Improved configure checks for IDNA libraries (added --with-http-libicu-dir, --with-http-libidnkit{,2}-dir, --with-http-libidn2-dir) 
* Fix bug #73055: crash in http\QueryString (Mike, @rc0r) (CVE-2016-7398) 
* Fix bug #73185: Buffer overflow in HTTP parse_hostinfo() (Mike, @rc0r) (CVE-2016-7961) 
* Fix HTTP/2 version parser for older libcurl versions (Mike) 
* Fix gh-issue #52: Underscores in host names: libidn Failed to parse IDN (Mike, @canavan)                                 | 
                            
                                                                    
                                                    
                                | 2.6.0 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan)  
 
Changes from beta1: 
* Fixed PHP-5.3 compatibility 
* Fixed recursive calls to the event loop dispatcher 
 
Changes from beta2: 
* Fix bug #73055: crash in http\QueryString (Mike, @rc0r) (CVE-2016-7398) 
* Fix bug #73185: Buffer overflow in HTTP parse_hostinfo() (Mike, @rc0r) (CVE-2016-7961) 
* Fix HTTP/2 version parser for older libcurl versions (Mike)                                 | 
                            
                                                                    
                                                    
                                | 3.1.0RC1 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan) 
 
Changes from beta1: 
* Fixed recursive calls to the event loop dispatcher 
 
Changes from beta2: 
+ Improved configure checks for IDNA libraries (added --with-http-libicu-dir, --with-http-libidnkit{,2}-dir, --with-http-libidn2-dir) 
* Fix bug #73055: crash in http\QueryString (Mike, @rc0r) (CVE-2016-7398) 
* Fix bug #73185: Buffer overflow in HTTP parse_hostinfo() (Mike, @rc0r) 
* Fix HTTP/2 version parser for older libcurl versions (Mike) 
* Fix gh-issue #52: Underscores in host names: libidn Failed to parse IDN (Mike, @canavan)                                 | 
                            
                                                                    
                                                    
                                | 2.6.0RC1 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan)  
 
Changes from beta1: 
* Fixed PHP-5.3 compatibility 
* Fixed recursive calls to the event loop dispatcher 
 
Changes from beta2: 
* Fix bug #73055: crash in http\QueryString (Mike, @rc0r) (CVE-2016-7398) 
* Fix bug #73185: Buffer overflow in HTTP parse_hostinfo() (Mike, @rc0r) 
* Fix HTTP/2 version parser for older libcurl versions (Mike)                                 | 
                            
                                                                    
                                                    
                                | 3.1.0beta2 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan) 
 
Changes from beta1: 
* Fixed recursive calls to the event loop dispatcher                                 | 
                            
                                                                    
                                                    
                                | 2.6.0beta2 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan)  
 
Changes from beta1: 
* Fixed PHP-5.3 compatibility 
* Fixed recursive calls to the event loop dispatcher                                 | 
                            
                                                                    
                                                    
                                | 3.1.0beta1 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan)                                 | 
                            
                                                                    
                                                    
                                | 2.6.0beta1 | 
                                
                                    + Added http\Client\Curl\User interface for userland event loops 
+ Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and http\Url::STDFLAGS 
+ Added http\Client::setDebug(callable $debug) 
+ Added http\Client\Curl\FEATURES constants and namespace 
+ Added http\Client\Curl\VERSIONS constants and namespace 
+ Added share_cookies and share_ssl (libcurl >= 7.23.0) options to http\Client::configure() 
+ http\Client uses curl_share handles to properly share cookies and SSL/TLS sessions between requests 
+ Improved configure checks for default CA bundles 
+ Improved negotiation precision 
* Fixed regression introduced by http\Params::PARSE_RFC5987: negotiation using the params parser would receive param keys without the trailing asterisk, stripped by http\Params::PARSE_RFC5987. 
* Fix gh-issue #50: http\Client::dequeue() within http\Client::setDebug() causes segfault (Mike, Maik Wagner) 
* Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value() (Mike, @rc0r) 
* Fix gh-issue #45: HTTP/2 response message parsing broken with libcurl >= 7.49.1 (Mike) 
* Fix gh-issue #43: Joining query with empty original variable in query (Mike, Sander Backus) 
* Fix gh-issue #42: fatal error when using punycode in URLs (Mike, Sebastian Thielen) 
* Fix gh-issue #41: Use curl_version_info_data.features when initializing options (Mike) 
* Fix gh-issue #40: determinde the SSL backend used by curl at runtime (Mike, @rcanavan) 
* Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set option proxy_service_name (Mike, @rcanavan) 
* Fix gh-issue #38: Persistent curl handles: error code not properly reset (Mike, @afflerbach) 
* Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is used (Mike, @rcanavan, @afflerbach) 
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan) 
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan) 
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan)                                 | 
                            
                                                                    
                                                    
                                | 3.0.1 | 
                                
                                    * Fix php-bug #71719: Buffer overflow in HTTP url parsing functions (Mike, rc0r) 
* Fix gh-issue #28: Possible null pointer dereference in php_http_url_mod() (rc0r) 
* Fix gh-issue #21: Fix PHP7 config.w32 (Jan Ehrhardt) 
* Fix gh-issue #20: setSslOptions notice with curl 7.43 (Mike, Vitaliy Demidov)                                 | 
                            
                                                                    
                                                    
                                | 2.5.6 | 
                                
                                    * Fix php-bug #71719: Buffer overflow in HTTP url parsing functions (Mike, rc0r) 
* Fix gh-issue #28: Possible null pointer dereference in php_http_url_mod() (rc0r) 
* Fix gh-issue #22: Fix PHP5 config.w32 (Jan Ehrhardt) 
* Fix gh-issue #20: setSslOptions notice with curl 7.43 (Mike, Vitaliy Demidov)                                 | 
                            
                                                                    
                                                    
                                | 3.0.0 | 
                                
                                    PHP7 compatible release based on the 2.5.x series with the following backwards incompatible changes: 
- removed http\Url::FROM_ENV from the default flags of the http\Url constructor, use http\Env\Url instead                                 | 
                            
                                                                    
                                                    
                                | 3.0.0RC1 | 
                                
                                    PHP7 compatible release based on the 2.5.x series with the following backwards incompatible changes: 
- removed http\Url::FROM_ENV from the default flags of the http\Url constructor, use http\Env\Url instead                                 | 
                            
                                                                    
                                                    
                                | 2.5.5 | 
                                
                                    * Fixed gh-issue #16: No Content-Length header with empty POST requests                                 | 
                            
                                                                    
                                                    
                                | 2.5.3 | 
                                
                                    * Fixed gh-issue #12: crash on bad url passed to http\Message::setRequestUrl() 
* The URL parser now fails on empty labels                                 | 
                            
                                                                    
                                                    
                                | 2.5.2 | 
                                
                                    * Fixed regression with HEAD requests always warning about a partial file transfer 
+ Added "path_as_is" request option (libcurl >= 7.42)                                 | 
                            
                                                                    
                                                    
                                | 2.5.1 | 
                                
                                    * Fixed VC11 build (Jan Erhardt) 
* Fixed gh-issue #2: comparison of obsolete pointers in the header parser (xiaoyjy) 
* Fixed gh-issue #6: allow RFC1738 unsafe characters in query/fragment 
* Fixed gh-issue #7: crash with querystring and exception from error handler 
+ SSL certinfo is available for libcurl >= 7.42 with gnutls (openssl has already been since 7.19.1) 
+ Added "falsestart" SSL request option (available with libcurl >= 7.42 and darwinssl/NSS) 
+ Added "service_name" and "proxy_service_name" request options for SPNEGO (available with libcurl >= 7.43) 
+ Enabled "certinfo" transfer info on all supporting SSL backends (OpenSSL: libcurl v7.19.1, NSS: libcurl v7.34.0, GSKit: libcurl v7.39.0, GnuTLS: libcurl v7.42.0)                                 | 
                            
                                                                    
                                                    
                                | 2.5.0 | 
                                
                                    + Added RFC5988 (Web Linking) support to http\Params 
+ Added http\Url::SANITIZE_PATH to default flags of http\Url::mod() 
* Fixed overly aggressive response caching to only consider 2xx cachable                                 | 
                            
                                                                    
                                                    
                                | 2.5.0RC1 | 
                                
                                    * Added RFC5988 (Web Linking) support to http\Params 
* Added http\Url::SANITIZE_PATH to default flags of http\Url::mod() 
* Fixed overly aggressive response chaching to only consider 2xx cachable                                 | 
                            
                                                                    
                                                    
                                | 2.4.3 | 
                                
                                    * Fixed bug #69357 (HTTP/1.1 100 Continue overriding subsequent 200 response code with PUT request)                                 | 
                            
                                                                    
                                                    
                                | 2.4.2 | 
                                
                                    * Fixed bug 69076 (http\Url throws Exception on empty querystring) (p at wspnr dot com) 
* Fixed bug 69313 (http\Client doesn't send GET body) 
+ Added libidn2 and UIDNA as fallbacks for IDN support 
- Deferred warnings/exceptions of the client, so callbacks for the currently failing requests will still be called                                 | 
                            
                                                                    
                                                    
                                | 2.4.1 | 
                                
                                    * Fixed build with PHP <= 5.4 (Remi)                                 | 
                            
                                                                    
                                                    
                                | 2.4.0 | 
                                
                                    * Split off pecl/apfd and pecl/json_post                                 | 
                            
                                                                    
                                                    
                                | 2.3.2 | 
                                
                                    * Fixed bug with http\QueryString::offsetSet() resetting the complete query string                                 | 
                            
                                                                    
                                                    
                                | 2.3.1 | 
                                
                                    * Fixed build on platforms that need stddef.h to define ptrdiff_t (e.g. CentOS 7.5)                                 | 
                            
                                                                    
                                                    
                                | 2.3.0 | 
                                
                                    + 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) 
  . max_pipeline_length (int, max number of requests in a pipeline, libcurl >= 7.30.0) 
  . max_total_connections (int, max number of simultaneous open connections of this client, libcurl >= 7.30.0) 
  . pipelining (bool, whether to enable HTTP/1.1 pipelining) 
  . chunk_length_penalty_size (int, chunk length threshold for pipelining, libcurl >= 7.30.0) 
  . content_length_penalty_size (int, size threshold for pipelining, libcurl >= 7.30.0) 
  . pipelining_server_bl (array, list of server software names to blacklist for pipelining, libcurl >= 7.30.0) 
  . pipelining_site_bl (array, list of server host names to blacklist for pipelining, libcurl >= 7.30.0) 
  . use_eventloop (bool, whether to use libevent, libcurl+libevent) 
+ Added http\Client::getAvailableOptions() and http\Client::getAvailableConfiguration() methods 
+ Added support for HTTP2 if libcurl was built with nghttp2 support. 
+ 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 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 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 
 
Changes from RC1: 
* Fixed a shutdown crash with chunked encoded stream responses                                 | 
                            
                                                                    
                                                    
                                | 2.3.0RC1 | 
                                
                                    + 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) 
  . max_pipeline_length (int, max number of requests in a pipeline, libcurl >= 7.30.0) 
  . max_total_connections (int, max number of simultaneous open connections of this client, libcurl >= 7.30.0) 
  . pipelining (bool, whether to enable HTTP/1.1 pipelining) 
  . chunk_length_penalty_size (int, chunk length threshold for pipelining, libcurl >= 7.30.0) 
  . content_length_penalty_size (int, size threshold for pipelining, libcurl >= 7.30.0) 
  . pipelining_server_bl (array, list of server software names to blacklist for pipelining, libcurl >= 7.30.0) 
  . pipelining_site_bl (array, list of server host names to blacklist for pipelining, libcurl >= 7.30.0) 
  . use_eventloop (bool, whether to use libevent, libcurl+libevent) 
+ Added http\Client::getAvailableOptions() and http\Client::getAvailableConfiguration() methods 
+ Added support for HTTP2 if libcurl was built with nghttp2 support. 
+ 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 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 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                                 | 
                            
                                                                    
                                                    
                                | 2.2.1 | 
                                
                                    * Fixed Bug #69000 (http\Url breaks down with very long URL query strings)                                 | 
                            
                                                                    
                                                    
                                | 2.2.0 | 
                                
                                    - var_dump(http\Message) no longer automatically creates an empty body 
+ Added http\Message\Parser class 
+ Made http\Client::once() and http\Client::wait() available when using events 
+ Added http\Url::PARSE_MBLOC, http\Url::PARSE_MBUTF8, http\Url::PARSE_TOIDN and http\Url::PARSE_TOPCT constants 
+ Added http\Env\Response::setCookie() 
+ Added http\Env\Request::getCookie()                                 | 
                            
                                                                    
                                                    
                                | 2.2.0RC1 | 
                                
                                    - var_dump(http\Message) no longer automatically creates an empty body 
+ Added http\Message\Parser class 
+ Made http\Client::once() and http\Client::wait() available when using events 
+ Added http\Url::PARSE_MBLOC, http\Url::PARSE_MBUTF8, http\Url::PARSE_TOIDN and http\Url::PARSE_TOPCT constants 
+ Added http\Env\Response::setCookie() 
+ Added http\Env\Request::getCookie()                                 | 
                            
                                                                    
                                                    
                                | 2.1.4 | 
                                
                                    * Fixed bug #68353 (QsoSSL support removed in libcurl 7.39) 
* Fixed bug #68149 (duplicate content-length with libcurl < 7.23) 
* Fixed bug #66891 (Unexpected HTTP 401 after NTLM authentication)                                 | 
                            
                                                                    
                                                    
                                | 2.1.3 | 
                                
                                    * Fix build with libcurl < 7.26 (Remi)                                 | 
                            
                                                                    
                                                    
                                | 2.1.2 | 
                                
                                    + Added missing request option constants: 
  POSTREDIR_303, AUTH_SPNEGO (libcurl >= 7.38.0), SSL_VERSION_TLSv1_{0,1,2} (libcurl >= 7.34) 
* Fixed bug #68083 (PUT method not working after DELETE) 
* Fixed bug #68009 (Segmentation fault after calling exit(0) after a request) 
* Fixed bug #68000 (Extension does not build on FreeBSD)                                 | 
                            
                                                                    
                                                    
                                | 2.1.1 | 
                                
                                    * Fix httpVersion retrieval on bigendian (Remi) 
* Fix etag/crc32b on bigendian (Remi)                                 | 
                            
                                                                    
                                                    
                                | 2.1.0 | 
                                
                                    - Removed port and scheme guessing of http\Url for portability 
* Fixed PHP-5.3 compatibility 
* Fixed PHP-5.4 compatibility 
* Fixed possible bus error on shutdown when using events 
* Fixed sovereignty of clients when using events 
* Fixed a possible crash with http\Encoding\Stream\Dechunk::decode($unencoded) 
* Fixed a leak in http\Client\Curl options 
* Fixed bug #67733 (Compile error with libevent 2.x) 
+ Added RFC5987 support in http\Params 
+ Improved synthetic HTTP message parsing performace for ~20% 
+ Added request options if libcurl has builtin c-ares support: 
  dns_interface, dns_local_ip4, dns_local_ip6 (all libcurl >= 7.33.0) 
+ Added request options: 
  expect_100_timeout (libcurl >= 7.36.0), tcp_nodelay 
+ Added transfer info: 
  curlcode, tls_session (libcurl >= 7.34.0), only available during transfer                                 | 
                            
                                                                    
                                                    
                                | 2.1.0RC3 | 
                                
                                    Changes from RC2: 
* Fixed PHP-5.3 compatibility 
* Fixed possible bus error on shutdown when using events 
+ Added curlcode transfer info 
- Removed port and scheme guessing of http\Url for portability                                 | 
                            
                                                                    
                                                    
                                | 2.1.0RC2 | 
                                
                                    Changes from RC1: 
* Fixed a possible crash with http\Encoding\Stream\Dechunk::decode($unencoded) 
* Fixed a leak in http\Client\Curl options 
* Fixed PHP-5.4 compatibility                                 | 
                            
                                                                    
                                                    
                                | 2.1.0RC1 | 
                                
                                    * Fixed bug #67733 (Compile error with libevent 2.x) 
+ Added RFC5987 support in http\Params 
+ Improved synthetic HTTP message parsing performace for ~20% 
+ Added request options if libcurl has builtin c-ares support: 
  dns_interface, dns_local_ip4, dns_local_ip6 (all libcurl >= 7.33.0) 
+ Added request options: 
  expect_100_timeout (libcurl >= 7.36.0) 
  tcp_nodelay 
+ Added transfer info: 
  tls_session (libcurl >= 7.34.0), only available during transfer                                 | 
                            
                                                                    
                                                    
                                | 2.0.7 | 
                                
                                    * General improvements to the test suite 
* Fixed http\Env\Response::send() ignoring some write errors 
* Fixed bug #67528 (RFC compliant default user agent) 
* Fixed a garbage collector issue with JSON POSTs 
* Fixed refcount issue and double free of message bodies 
* Fixed use after free if the http\Client::enqueue() closure returns TRUE 
* Fixed bug #67584 (http\Client\Response not initialized as response on failure)                                 | 
                            
                                                                    
                                                    
                                | 2.0.6 | 
                                
                                    + Added "uploaded" progress state 
* Fixed bug #67089 (Segmentaion fault with ZTS) 
* Fixed compatibility with PHP-5.6+ 
* Fixed re-use of request messages which content length remained untouched when the body was reset                                 | 
                            
                                                                    
                                                    
                                | 2.0.5 | 
                                
                                    * Fix rare crash with uninitialized CURLOPT_HTTPHEADER 
* Fix build with -Werror=format-security (Remi) 
* Fix build with extenal libs needed by libcurl                                 | 
                            
                                                                    
                                                    
                                | 2.0.4 | 
                                
                                    * Removed the pecl/event conflict 
* Fixed bug #66388 (Crash on POST with Content-Length:0 and untouched body)                                 | 
                            
                                                                    
                                                    
                                | 2.0.3 | 
                                
                                    * Fixed typo                                 | 
                            
                                                                    
                                                    
                                | 2.0.2 | 
                                
                                    * Fixed bug #66250 (shutdown crash as shared extension)                                 | 
                            
                                                                    
                                                    
                                | 2.0.1 | 
                                
                                    * Fixed a bug with multiple ob_start(http\Env\Response) while replacing the body 
* Fixed build on Windows with libevent2                                 | 
                            
                                                                    
                                                    
                                | 2.0.0 | 
                                
                                    Extended HTTP support. Again.  
	  
Keep in mind that it's got the major version 2, because it's incompatible with pecl_http v1.                                 | 
                            
                                                                    
                                                    
                                | 2.0.0beta5 | 
                                
                                    Extended HTTP support. Again. Keep in mind that it's got the major version 2, because it's incompatible with pecl_http v1. 
 
* Introduces the http namespace. 
* Message bodies have been remodeled to use PHP temporary streams instead of in-memory buffers. 
* The utterly misunderstood HttpResponse class has been reimplemented as http\Env\Response inheriting http\Message. 
* Currently, there's only one Exception class left, http\Exception. 
* Errors triggered by the extension can be configured statically by http\Object::$defaultErrorHandling or inherited http\Object->errorHandling. 
* The request ecosystem has been modularized to support different libraries, though for the moment only libcurl is supported.                                 | 
                            
                                                                    
                                                    
                                | 1.7.6 | 
                                
                                    * Fixed bug #64380 (PHP-5.5 build fails)                                 | 
                            
                                                                    
                                                    
                                | 1.7.5 | 
                                
                                    * Fixed Bug #64310 (weak etags W/"abc" are quoted as "W/"abc"")                                 | 
                            
                                                                    
                                                    
                                | 2.0.0beta4 | 
                                
                                    ! >80% test coverage http://goo.gl/VmyIW 
* Fixed build with libcurl <= 7.21.3 
* Fixed var_dump of http\Message with inherited userland properties with increased access level 
+ Added http\Header::getParams() 
+ Added simple support for escapes and quotes in the params parser 
+ Added support for sending http\Env\Response over PHP streams 
+ Added message body reference counting                                 | 
                            
                                                                    
                                                    
                                | 2.0.0beta3 | 
                                
                                    ! >80% test coverage http://goo.gl/YCV74 
* Fixed http\Env\Response throttling 
* Fixed http\Env\Response caching by last-modified 
* Fixed http\Message::addBody() 
* Fixed http\Message::parentMessage write access 
* Fixed crash with freed but not nulled event_base pointer 
* Fixed crash with null pointer dereference on http\Encoding\Stream::flush() 
* Fixed some memory leaks 
+ Added http\Header::negotiate() 
+ Added http\Header::parse()                                 | 
                            
                                                                    
                                                    
                                | 2.0.0beta2 | 
                                
                                    ! >80% test coverage 
* Fixed http\Request\Pool with libevent2 
* Fixed http\Env\Request::getFiles() with multiple-file-uploads 
* Fixed PHP-5.3 compatibility 
* Fixed reference handling of http\Message\Body::getResource() 
* Fixed reading stream filters to correctly detect EOF of tmp and mem streams 
- Change: merge message headers with the same key 
- Change: the stream message parser can optionally return after each message 
- Change: you have to care yourself for Content headers if a message's body has a reading stream filter attached 
+ Added http\Env::getResponseStatusForAllCodes()                                 | 
                            
                                                                    
                                                    
                                | 2.0.0beta1 | 
                                
                                    * PHP-5.3 compatibility by Anatoly Belsky 
* Fixed http\Client's history handling 
* Disallow serialization of non-serializable objects 
* Fixed parsing of folded headers 
* Fixed the parsing HTTP messages from streams 
* Fixed leak in persistent handles cleanup routine 
+ Added http\Url::SANITIZE_PATH; URL paths are not sanitized by default anymore 
+ Added JSON Content-Type handler for request body processing if ext/json is present 
+ Added missing IANA HTTP response codes 
+ Added http\Message\Body::getResource() 
+ Added QueryString proxy methods to http\Env\Request 
+ Added Serializable to http\Message\Body's interfaces                                 | 
                            
                                                                    
                                                    
                                | 2.0.0alpha1 | 
                                
                                    + Added http\Client\AbstractClient::request(string method, string url[, array headers=null[, mixed body=null[, array options=null]]]) 
+ Added constants http\Params::PARSE_RAW, ::PARSE_DEFAULT, ::PARSE_URLENCODED, ::PARSE_DIMENSION, ::PARSE_QUERY 
+ Added fourth parameter 'flags' to http\Params' constructor, which defaults to http\Params::PARSE_DEFAULT 
* Fixed bug #61444 (query string converts . to _ in param names)                                 | 
                            
                                                                    
                                                    
                                | 1.7.4 | 
                                
                                    * Fixed Bug #61372 (build fails with "undefined symbol Z_ADDREF_P)                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev10 | 
                                
                                    + This release contains the http\Request to http\Client refactoring triggered by Benjamin Eberlei. Many thanks.                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev9 | 
                                
                                    + Added population of $_POST and $_FILES for non-POST requests 
- Renamed http\Env\Request::getPost() to ::getForm() 
- Changed http\Env\Response::setContentDisposition() to take an http\Params like array as argument 
- Removed http\Env\Response::CONTENT_DISPOSOTION_* constants 
- Removed http\Request\Method class; request methods are now used as simple strings                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev8 | 
                                
                                    * Fixed build failure and compiler warnings 
* Fixed logical errors in http\Env\Response::isCachedBy{Etag,LastModified}() 
* Fixed memory leaks in http\Env\Response::isCachedByLastModified() 
* Fixed memory leaks in http\Env::getResponseHeader() 
* Fixed erroneous trailing CRLF of http\Message strings 
- Renamed http\Message\Body::add() to ::addForm() 
+ Added http\Message\Body::addPart(http\Message $part) 
+ Added http\Env\Response::__invoke() output buffering handler                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev7 | 
                                
                                    + Added multipart support to http\Message, which can now splitMultipartBody()  
  to a http\Message chain, f.e. of a ranges response or file upload request. 
+ Added primitive quoting/escaping capabilities to http\Params. 
+ Reworked and improved negotiation support, added asterisk (*) matching etc.                                 | 
                            
                                                                    
                                                    
                                | 1.7.3 | 
                                
                                    * Fixed Bug #61310: Bundled pecl_http-1.7.2.tgz is invalid                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev6 | 
                                
                                    + Added stream parsing capability to http\Message 
+ Added http\Env\Request methods: getQuery(), getPost(), getFiles() 
* Changed http\Env\Response to only cache responses to GET or HEAD requests without authorization 
* Fixed possible crash when http\Url was initialized with empty urls                                 | 
                            
                                                                    
                                                    
                                | 1.7.2 | 
                                
                                    + Added PHP-5.4 compatibility 
* Fixed bug #59974 methodRegister doesn't allow "_" to be in method name 
* Fixed SAPI hang if request body size is greater than 4k with http_get_request_body_stream()                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev5 | 
                                
                                    * Improved test coverage [1] and fixed a lot of issues with the cookie, params, querystring, 
  persistent handles, request factory, etag, stream filters, encoding streams, negotiation 
  and HTTP message info code. 
 
[1] http://dev.iworks.at/ext-http/lcov/ext/http/index.html                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev4 | 
                                
                                    This is to become v2 of the known pecl_http extension. 
It is completely incompatible to previous version. 
Try it, or let it be. If you are not sure, let it be. Really. 
 
List of changes (TBD): 
* Everything lives below the http namespace 
* The message body is implemented as a temp stream instead of a chunk of memory 
* The utterly misunderstood HttpResponse class has been reimplemented in the http\env namespace 
* There's only http\Exception 
* Every instance follows http\Object::$defaultErrorHandling or inherited http\Object->errorHandling, but only for errors generated by the extension itself 
* You have to use the http\Request\Factory to create your requests/pools/datashares                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev3 | 
                                
                                    This is to become v2 of the known pecl_http extension. 
It is completely incompatible to previous version. 
Try it, or let it be. If you are not sure, let it be. Really. 
 
List of changes (TBD): 
* Everything lives below the http namespace 
* The message body is implemented as a temp stream instead of a chunk of memory 
* The utterly misunderstood HttpResponse class has been reimplemented in the http\env namespace 
* There's only http\Exception 
* Every instance follows http\Object::$defaultErrorHandling or inherited http\Object->errorHandling, but only for errors generated by the extension itself 
* You have to use the http\Request\Factory to create your requests/pools/datashares                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev2 | 
                                
                                    This is to become v2 of the known pecl_http extension. 
It is completely incompatible to previous version. 
Try it, or let it be. If you are not sure, let it be. Really. 
 
List of changes (TBD): 
* Everything lives below the http namespace 
* Supported request libraries: curl, neon 
* The message body is implemented as a temp stream instead of a chunk of memory 
* The utterly misunderstood HttpResponse class has been reimplemented in the http\env namespace 
* There's only http\Exception 
* Every instance follows http\Object::$defaultErrorHandling or inherited http\Object->errorHandling, but only for errors generated by the extension itself                                 | 
                            
                                                                    
                                                    
                                | 2.0.0dev1 | 
                                
                                    This is to become v2 of the known pecl_http extension. 
It is completely incompatible to previous version. 
Try it, or let it be. If you are not sure, let it be. Really. 
 
List of changes (TBD): 
* Everything lives below the http namespace 
* Supported request libraries: curl, neon 
* The message body is implemented as a temp stream instead of a chunk of memory 
* The utterly misunderstood HttpResponse class has been reimplemented in the http\env namespace 
* There's only http\Exception 
* Every instance follows http\Object::$defaultErrorHandling or inherited http\Object->errorHandling, but only for errors generated by the extension itself                                 | 
                            
                                                                    
                                                    
                                | 1.7.1 | 
                                
                                    * Fixed a bug when the status component of the HTTP response is missing (fixes Bug #19390) (Ilia) 
* Fixed double-free when auto-decompressing pages (Ilia) 
* Fixed non-funtional HttpMessage::setResponseStatus() 
* Fixed Bug #22177 (http_redirect breaks output with zlib.output_compression=on) 
* Fixed Bug #17806 (Segmentation fault when passing invalid url to http_get()) 
* Fixed logic error and possible hang in sapi_deactivate when using http_get_request_body() with a request body longer than 4096 bytes (Rob) 
* Fixed Bug #17896 (Make failed)                                 | 
                            
                                                                    
                                                    
                                | 1.7.0 | 
                                
                                    * Added generic http_negotiate() function (FR#17338) 
* Added request options: 
 - proxytunnel: enable tunelling through the HTTP proxy 
 - noproxy: comma separatet list of hosts (* means all hosts) not to use a proxy for (libcurl >= 7.19.4) 
* Added postredir request options constants: 
 - HTTP_POSTREDIR_301 
 - HTTP_POSTREDIR_302 
 - HTTP_POSTREDIR_ALL 
* Added authtype request option constant: 
 - HTTP_AUTH_DIGEST_IE 
* Added proxytype request option constants: 
 - HTTP_PROXY_HTTP_1_0 
* Added request info members: 
 - condition_unmet (libcurl >= 7.19.4) 
* Fixed bug #16893 (Content not decoded with zlib support and compress enabled) 
* Fixed bug #17087 (http_build_cookie() exhausts memory if cookie value is NULL) 
* Fixed bug #17169 (Wrong return value of HttpMessage::getHttpVersion())                                 | 
                            
                                                                    
                                                    
                                | 1.7.0b2 | 
                                
                                    * Added request options: 
 - proxytunnel: enable tunelling through the HTTP proxy 
 - noproxy: comma separatet list of hosts (* means all hosts) not to use a proxy for (libcurl >= 7.19.4) 
* Added postredir request options constants: 
 - HTTP_POSTREDIR_301 
 - HTTP_POSTREDIR_302 
 - HTTP_POSTREDIR_ALL 
* Added authtype request option constant: 
 - HTTP_AUTH_DIGEST_IE 
* Added proxytype request option constants: 
 - HTTP_PROXY_HTTP_1_0 
* Added request info members: 
 - condition_unmet (libcurl >= 7.19.4)                                 | 
                            
                                                                    
                                                    
                                | 1.6.6 | 
                                
                                    * Fixed a Last-Modified caching bug in http_send API 
* Fixed bug with HttpRequestPool and libevent when adding requests while running 
* Fixed memory leak in HttpResponse::getStream() (Felipe Pena) 
* Fixed bug #14382 (PHP crash after casting scalar argument to an array in HttpQueryString) 
* Fixed bug #16533 (http_redirect fails with url->port==0)                                 | 
                            
                                                                    
                                                    
                                | 1.6.5 | 
                                
                                    * Fixed PHP5.1 build 
* Fixed http_get_request_body[_stream]() with FastCGI SAPI                                 | 
                            
                                                                    
                                                    
                                | 1.6.4 | 
                                
                                    * Fixed PHP4 build 
* Fixed PHP5.3 issue in the negotiation API 
* Fixed HttpMessage::toMessageTypeObject() to honor non-string arguments 
* Fixed memory leaks and unterminated string issues with HttpMessage 
* Fixed bug #16577 typo in http_request_object.c (HttpRequest::addBody) 
* Fixed bug #16700 child classes of HttpMessage cannot not have array properties                                 | 
                            
                                                                    
                                                    
                                | 1.7.0b1 | 
                                
                                    * Implement Request #14408 (Add a customizable timeout for HttpRequestPool::socketSelect) 
* Implement Request #15775 (recursive http_request_body_encode) 
* Added request options: 
 - postredir: enforcing RFC conformig POST after redirect (libcurl >= 7.17.1) 
 - address_scope: RFC4007 zone_id (libcurl >= 7.19.0) 
 - ssl->issuercert: validate peer certificate issuer (libcurl >= 7.19.0) 
 - ssl->crlfile: require CRL check (libcurl >= 7.19.0 with openssl) 
 - ssl->certinfo: enable the certinfo gatherer (libcurl >= 7.19.1 with openssl) 
* Added proxytype request option constants: 
 - HTTP_PROXY_SOCKS4A 
 - HTTP_PROXY_SOCKS5_HOSTNAME 
* Added request info members: 
 - redirect_url (libcurl >= 7.18.2) 
 - primary_ip (libcurl >= 7.19.0) 
 - appconnect_time (libcurl >= 7.19.0) 
 - certinfo (libcurl >= 7.19.1 with openssl)                                 | 
                            
                                                                    
                                                    
                                | 1.6.3 | 
                                
                                    * Fixed bug #15495 (HttpMessage::setHttpVersion segfault) 
* Fixed bug #15497 (HttpInflateStream::finish segfault) 
* Fixed bug #15499 (HttpRequest::addHeaders segfault) 
* Fixed bug #15509 (HttpMessage::rewind memory leaks) 
* Fixed bug #15800 (Double free when zval is separated in convert_to_*) 
* Fixed bug #15813 (Requests not removed from multi stack when fatal errors occur with fcgi)                                 | 
                            
                                                                    
                                                    
                                | 1.6.2 | 
                                
                                    * Fixed PHP-5.3 API incompatibilities (including bug #15065) 
* Fixed memory corruption with headers and HttpRequest 
* Fixed crash in HttpMessage::unserialize() 
* Fixed bug #14826 (race condition in http_request_dtor) 
* Fixed bug #15223 (http_parse_message cuts off more than headers)                                 | 
                            
                                                                    
                                                    
                                | 1.6.1 | 
                                
                                    * Fixed bug #13362 (PHP-5.3 build) 
* Fixed bug #14168 (st->errorbuffer not cleared between uses of persistent handles) 
* Fixed bug #14218 (properties of class extending HttpMessage inaccessible)                                 | 
                            
                                                                    
                                                    
                                | 1.6.0 | 
                                
                                    + Added HttpRequest::flushCookies() (libcurl >= 7.17.1) 
+ Added constant HTTP_URL_FROM_ENV 
+ Added 'retrycount' and 'retrydelay' request options 
+ Added libevent support for libcurl (>= 7.16.0): 
  o added --with-http-curl-libevent configure option 
  o added HttpRequestPool::enableEvents() 
* Fixed problems with cookiestore request option introduced with persistent handles 
* Fixed crash on prematurely called HttpMessage::next() 
* Fixed possible shutdown crash with http_parse_params() and PHP4 
* Fixed a possible crash at module shutdown in the persistent handle API 
  (probably fixing bug #11509) 
* Fixed test suite for PHP4 
* Fixed missing PHP_LIBDIR definition in config.m4 for PHP4 
* Fixed non-standard shell support in config.m4                                 | 
                            
                                                                    
                                                    
                                | 1.6.0RC1 | 
                                
                                    1.6.0RC1: 
+ Added HttpRequest::flushCookies() (libcurl >= 7.17.1) 
* Fixed problems with cookiestore request option introduced with persistent handles 
* Fixed crash on prematurely called HttpMessage::next() 
* Fixed possible shutdown crash with http_parse_params() and PHP4 
 
1.6.0b2: 
+ Added constant HTTP_URL_FROM_ENV 
* Fixed a possible crash at module shutdown in the persistent handle API 
  (probably fixing bug #11509) 
* Fixed test suite for PHP4 
* Fixed missing PHP_LIBDIR definition in config.m4 for PHP4 
* Fixed non-standard shell support in config.m4 
 
1.6.0b1: 
+ Added 'retrycount' and 'retrydelay' request options 
+ Added libevent support for libcurl (>= 7.16.0): 
  o added --with-http-curl-libevent configure option 
  o added HttpRequestPool::enableEvents()                                 | 
                            
                                                                    
                                                    
                                | 1.6.0b2 | 
                                
                                    + Added constant HTTP_URL_FROM_ENV 
+ Added 'retrycount' and 'retrydelay' request options 
+ Added libevent support for libcurl (>= 7.16.0): 
  o added --with-http-curl-libevent configure option 
  o added HttpRequestPool::enableEvents() 
* Fixed a possible crash at module shutdown in the persistent handle API 
  (probably fixing bug #11509) 
* Fixed test suite for PHP4 
* Fixed missing PHP_LIBDIR definition in config.m4 for PHP4 
* Fixed non-standard shell support in config.m4                                 | 
                            
                                                                    
                                                    
                                | 1.5.6 | 
                                
                                    * Fixed a possible crash at module shutdown in the persistent handle API 
  (probably fixing bug #11509) 
* Fixed test suite for PHP4 
* Fixed missing PHP_LIBDIR definition in config.m4 for PHP4 
* Fixed non-standard shell support in config.m4                                 | 
                            
                                                                    
                                                    
                                | 1.6.0b1 | 
                                
                                    + Added 'retrycount' and 'retrydelay' request options 
+ Added libevent support for libcurl (>= 7.16.0): 
  o added --with-http-curl-libevent configure option 
  o added HttpRequestPool::enableEvents()                                 | 
                            
                                                                    
                                                    
                                | 1.5.5 | 
                                
                                    * Fixed Bug #11929 (http_negotiate does not return default value on non-match) 
* Fixed SSL library detection for libcurl >= 7.16.2 
- Removed max_recv_speed and max_send_speed request options 
  again, due to LFS dependence                                 | 
                            
                                                                    
                                                    
                                | 1.5.4 | 
                                
                                    * Fixed bug #11359 HttpMessage::toMessageTypeObject() does not populate POST fields                                 | 
                            
                                                                    
                                                    
                                | 1.5.3 | 
                                
                                    * Fixed crashes with repeated registering/unregisitering of request methods (noticed by Andreas Weber)                                 | 
                            
                                                                    
                                                    
                                | 1.5.2 | 
                                
                                    * Fixed bug #10151 (build fails dynamic linking on Mac OS X) 
* Allow setting the "proxyhost" request option to an empty string, 
  which lets curl ignore any environment settings 
* Allow unsetting request options by passing NULL: 
  $request->setOptions(array("option" => NULL));                                 | 
                            
                                                                    
                                                    
                                | 1.5.1 | 
                                
                                    * Fixed build with PHP-5 < v5.2                                 | 
                            
                                                                    
                                                    
                                | 1.5.0 | 
                                
                                    * Fixed responses to range requests which asked for the first byte (0-0) 
* Fixed Win32 build                                 | 
                            
                                                                    
                                                    
                                | 1.5.0RC2 | 
                                
                                    o Improved new persistent handles functionality 
  - Removed --enable-http-persistent-handles 
  + Added http.persistent.handles.limit system INI option which controls 
    the maximum amount of idle persistent handles kept around (per provider); 
      0 means every handle is destroyed after usage (i.e. disabled), 
      -1 means virtually unlimited maximum amount of idle handles (default)                                 | 
                            
                                                                    
                                                    
                                | 1.5.0RC1 | 
                                
                                    + Added HttpMessage::fromEnv(int type[, string class_name = "HttpMessage"]) (Clay Loveless) 
+ Added support for per process persistent cURL handles (requested by Clay Loveless): 
  o Added --enable-http-persistent-handles configure option 
  o Added http_persistent_handles_count(), http_persistent_handles_clean([string name]), http_persistent_handles_ident([string ident]) 
  o Added http.persistent.handles.ident INI setting                                 | 
                            
                                                                    
                                                    
                                | 1.4.1 | 
                                
                                    * Fixed crashes with incompletely initialiezed HttpMessages                                 | 
                            
                                                                    
                                                    
                                | 1.4.0 | 
                                
                                    * Allow response codes up to 599 in HttpMessage::setResponseCode()                                 | 
                            
                                                                    
                                                    
                                | 1.4.0RC2 | 
                                
                                    * Fixed infinite loop with http_parse_params("=") 
* Fixed greedy response message parsing with proxy CONNECT requests (petr at hroch dot info)                                 | 
                            
                                                                    
                                                    
                                | 1.4.0RC1 | 
                                
                                    * Improved response performance 
+ Added "ipresolve" request option 
+ Added HTTP_IPRESOLVE_{ANY|V4|V6}, HttpRequest::IPRESOLVE_{ANY|V4|V6} constants 
+ Added missing HTTP_SSL_VERSION_{ANY|TLSv1|SSLv2|SSLv3}, HttpRequest::SSL_VERSION_{ANY|TLSv1|SSLv2|SSLv3} constants 
+ Added factory methods to HttpMessage, HttpQueryString, HttpRequest, HttpRequestDataShare, HttpDeflateStream, HttpInflateStream 
* Fixed aborted PUT request when empty put data was set with HttpRequest::setPutData() 
* Fixed crash when using non-associative arrays as request headers 
* Fixed crash when serializing incomplete HttpMessage objects 
* Fixed bug #9282: libcurl version error in configure (keith at iveys dot org) 
* Fixed crash when retrieving the response message from an unserialized HttpRequest object 
- Removed obsolete HTML function reference                                 | 
                            
                                                                    
                                                    
                                | 1.3.3 | 
                                
                                    * Fixed HttpResponse::setHeader("name", {omitted|NULL|""}) not unsetting header 
* Fixed array parameters to allow NULL in HttpRequest::__construct(), 
  HttpRequest::getResposeCookie(), HttpMessage::setHeaders(), 
  http_parse_cookie(), http_post_fields(). 
* Fixed possible leak in http_send_data() and HttpResponse::setData() 
* Fixed build --without-http-curl-requests (bug #8872) 
* Fixed build with PHP < 4.3.10 (bug #9067)                                 | 
                            
                                                                    
                                                    
                                | 1.3.2 | 
                                
                                    * Fixed invalid detection whether a deflated response should be started 
* Fixed build --without-http-zlib-compression (bug #8872)                                 | 
                            
                                                                    
                                                    
                                | 1.3.1 | 
                                
                                    * Fixed build with gcc-2.95 (bug #8737) 
* Fixed bug in HttpRequestPool where a negative timeout was passed to select()                                 | 
                            
                                                                    
                                                    
                                | 1.3.0 | 
                                
                                    + Added HttpRequestDataShare (interface to curl_share) 
+ Added "dns_cache_timeout", "low_speed_limit", "low_speed_time", "max_send_speed", 
  "max_recv_speed", "forbid_reuse" and "fresh_connect" request options 
+ Added HttpRequestPool::enablePipelining([bool enable = TRUE]) (libcurl >= 7.16.0, unstable)                                 | 
                            
                                                                    
                                                    
                                | 1.2.1 | 
                                
                                    + Added HttpException::__toString() which takes care about any inner exceptions 
- Disallowed detaching HttpRequest objects from HttpRequestPool while executing progress callback 
* Fixed crash on detaching requests from pool in request event callbacks 
* Fixed suppression of nested exceptions in e.g. HttpRequestPool::send() (fixes bug #8535) 
* Fixed issues with inheritance and cloning of HttpDeflateStream, HttpInflateStream and HttpMessage 
  (Extending classes lose default properties on instantiation; Complex members ignored during cloning)                                 | 
                            
                                                                    
                                                    
                                | 1.2.0 | 
                                
                                    + Improved response performance (HttpResponse, http_send API) 
* Fixed http_parse_cookie() allowed_extras and flags parameters 
* Added http_build_cookie() function 
* Fixed configuration with shared dependencies                                 | 
                            
                                                                    
                                                    
                                | 1.1.0 | 
                                
                                    * Fixed endless loop in http_build_url("..") 
* Fixed HttpResponse::capture() failure if buffered output exceeds 40k 
* Fixed HttpQueryString failures with objects as params 
* Fixed memory leaks with overloaded classes extending HTTP classes 
* Added HttpQueryString::mod(array $params) method 
* Added ArrayAccess to interfaces implemented by HttpQueryString 
* Added HttpMessage::getHeader(string $name) method                                 | 
                            
                                                                    
                                                    
                                | 1.0.1 | 
                                
                                    * Fixed build with gcc-2.95 (Thanks to Alexander Zhuravlev) 
* Fixed memory leak in inflate code (Thanks to Thomas Landro Johnsen)                                 | 
                            
                                                                    
                                                    
                                | 1.0.0 | 
                                
                                    + Added --with[out]-http-shared-deps configure option (dependencies on shared extensions) 
+ Added INI entries: http.log.not_found, http.send.not_found_404 
+ Added HttpMessage::guessContentType() 
* Fixed build on Debian systems where access to Curl_* functions is prohibited 
* Fixed empty Cache-Control header if not customly set with HttpResponse 
* Reset Content-Disposition and Content-Type if file is not found by http_send_file() etc                                 | 
                            
                                                                    
                                                    
                                | 1.0.0RC5 | 
                                
                                    + Added HttpRequest::enableCookies() and HttpRequest::resetCookies([bool session_only=FALSE]) 
+ Added optional flags argument to http_parse_params() 
+ Added HTTP_PARAMS_ALLOW_COMMA, HTTP_PARAMS_ALLOW_FAILURE, HTTP_PARAMS_RAISE_ERROR constants 
* Fixed http_build_url("./path") if REQUEST_URI is empty 
* Fixed http_parse_params("foo;bar") returning "foo" and "ar" 
* Fixed return value of http_parse_params() Object{"params"=>Array("value", Array("name"=>"value"), ...)} 
* Fixed HttpMessage::setRequestMethod() errenously issuing a warning about an unknown request method 
* Fixed bugs introduced by using the new REQUEST_TIME server variable 
! NOTE: Many INI settings have been renamed to comply with the internal structure                                 | 
                            
                                                                    
                                                    
                                | 1.0.0RC4 | 
                                
                                    + Added http_parse_params() function 
+ Added HTTP_URL_STRIP_ALL constant 
* Fixed possible crash in progress/onfinish request callbacks 
* Fixed http_redirect() and http_build_url() without arguments 
* Fixed behaviour of http_build_url() when second parameter is NULL 
* Enabled recursive query string merging in http_build_url() with HTTP_URL_JOIN_QUERY                                 | 
                            
                                                                    
                                                    
                                | 1.0.0RC3 | 
                                
                                    + Added missing http_request() function 
+ Added missing http_request_body_encode() function 
- Improved performance of the message and header parser 
- Disallow $HttpMessage->prepend($HttpMessage) causing infinite recursion 
* Fixed internal http_parse_headers() always returning success 
* Fixed missing "parentMessage" entry in print_r($HttpMessageObject) 
* Fixed possible crash if the response does not contain a status message                                 | 
                            
                                                                    
                                                    
                                | 1.0.0RC2 | 
                                
                                    * Fixed Bug #7192: Build against libcurl >= 7.15.2 fails 
* Fixed access of super globals 
* Fixed sending userspace streams 
* Fixed too aggressive caching behaviour of HttpResponse                                 | 
                            
                                                                    
                                                    
                                | 1.0.0RC1 | 
                                
                                    * Fixed possible crash in HttpQueryString if the SAPI does not have a treat_data function registered. 
* Fixed http_build_str() to urlencode square brackets ("[]"). 
* Fixed HttpQueryString::xlate() 
* Fixed builds where include/php/ext/iconv does not have php_have_*.h files 
* Fixed PHP-4 build.                                 | 
                            
                                                                    
                                                    
                                | 0.25.0 | 
                                
                                    * Fixed bug #6924 (Linking fails on Mac OSX). 
* Fixed HttpRequest::addRawPostData(). 
 
- Renamed HttpQueryString::getInstance() to more commonly used ::singleton(). 
- Renamed HttpQueryString::iconv() to more generic ::xlate(). 
 
+ Added feature request http_put_data() and HttpRequest::(set|get|add)PutData(). 
+ Added 'range' request option. 
+ Added 'proxytype' request option. 
+ Added HTTP_PROXY_HTTP, HTTP_PROXY_SOCKS4, HTTP_PROXY_SOCKS5 constants.                                 | 
                            
                                                                    
                                                    
                                | 0.24.1 | 
                                
                                    * Fixed bug #6861 - 5 digit ports get truncated 
* Fixed bug with non-functional HttpRequest::setContentType()                                 | 
                            
                                                                    
                                                    
                                | 0.24.0 | 
                                
                                    + Added If-Range header recognition. 
+ Added "portrange" request option. 
+ Added HttpQueryString::iconv(). 
+ HttpQueryString implements Serializable (PHP-5.1). 
 
* Fixed bug #6804 - configure does not recognize '--without-http-zlib-compression'. 
* Fixed cases where '412 Precondition failed' responses should be sent. 
* Fixed message chain order in HttpRequest::getHistory().                                 | 
                            
                                                                    
                                                    
                                | 0.23.1 | 
                                
                                    * Fixed http_parse_cookie(), really.                                 | 
                            
                                                                    
                                                    
                                | 0.23.0 | 
                                
                                    + Added 'etag' request option. 
+ Added 'encodecookies' request option (defaults to true). 
+ Added missing accessors for response status text to HttpMessage and HttpRequest classes. 
+ Added HttpMessage::reverse(). 
+ Added bool must_revalidate parameter to HttpResponse::setCacheControl() 
 
- Reimplemented http_parse_cookie(). 
- Changed HttpRequest::getResponseCookie() to HttpRequest::getResponseCookies(),  
  compliant to http_parse_cookie(). 
- http_build_url() now tries to "resolve" public hostname prior falling back  
  to localhost if neither HTTP_HOST nor SERVER_NAME is set. 
- Changed HttpRequest::getHistory() to return a real property. 
 
* Fixed PHP-4.4 and PHP-5.0 build.                                 | 
                            
                                                                    
                                                    
                                | 0.22.0 | 
                                
                                    + Added HTTP 'protocol' version request option. (Ilia) 
+ Added optional class_name param to HttpMessage::fromString() 
+ Added HttpMessage::toMessageTypeObject(), HttpMessage::detach(), HttpMessage::prepend() 
+ Added Iterator interface to HttpMessage 
+ Added http_get_request_body_stream() 
+ Added HttpQueryString class 
 
- Don't pretend anylonger to understand 'compress' Content-Encoding 
- Sending an User-Agent can now be prevented by setting 'useragent' to NULL or empty string. (Ilia) 
- Changed http_redirect() to PHPs behaviour by default 
- Changed configure to enable curl and zlib functionality by default 
- Changed http_build_url() to accept a flag that defines what parts and how they are replaced/merged 
 
* Decreased the per-request calls to curl_easy_setopt() 
* Fixed gnutls ZTS build 
* Fixed openssl ZTS issues with other libraries using openssl 
* Fixed some issues with http_get_request_body() 
* Fixed bug #6645 - doesn't compile with zlib 1.2.2 (undefined Z_FIXED)                                 | 
                            
                                                                    
                                                    
                                | 0.21.0 | 
                                
                                    ! Encodings functionality requires libz version 1.2.0.4 or greater 
 
+ Added HttpDeflateStream and HttpInflateStream classes 
+ Added ob_deflatehandler and ob_inflatehandler 
+ Added HttpRequest::getRawRequestMessage and ::getRawResponseMessage 
+ Added 'resetcookies' request option (libcurl > 7.14.1) 
 
- Changed all methods and properties with "URI" in their name to "URL" 
- Changed HttpRequest properties to be private 
 
* Fixed a lot of memory corruptions within HttpRequest 
 
Special thanks for this release go to Ilia Alshanetsky.                                 | 
                            
                                                                    
                                                    
                                | 0.20.0 | 
                                
                                    ! Request functionality requires libcurl >= 7.12.3 now 
 
+ Added 'bodyonly' request option 
+ Added IOCTL callback for cURL 
+ Added ssl_engines array and cookies array to the request info array 
+ Added http_parse_cookie() to parse Set-Cookie headers 
 
- Renamed http_connectcode to connect_code in the request info array 
- Enable "original headers" previously stripped off by the message parser: 
	o X-Original-Transfer-Encoding (Transfer-Encoding) 
	o X-Original-Content-Encoding (Content-Encoding) 
	o X-Original-Content-Length (Content-Length) 
- RequestExceptions thrown by HttpRequestPool::__construct() and send() are 
  now wrapped into the HttpRequestPoolException object's $exceptionStack property 
- Removed http_compress() and http_uncompress() (http_deflate/inflate ambiguity) 
 
* Fixed bug which caused GZIP encoded archives to be decoded 
* Fixed bug with DEFLATE encoded response messages 
* Fixed several memory leaks and inconspicuous access violations 
* Fixed some logical errors in the uri builder                                 | 
                            
                                                                    
                                                    
                                | 0.19.0 | 
                                
                                    + Added http_negotiate_content_type() 
 
* Fixed bug in http_negotiate_*() when client sends spaces within accept headers 
 
- Removed support for etag hashing through libmhash 
- Removed HTTP_ETAG_* and HttpResponse::ETAG_* constants 
- Changed http.etag_mode INI setting to acccept a string specifying the 
  hash algorithm to use for generating etags. 
  CRC32, MD5 and SHA1 are available out of the box with MD5 being the default.  
  If pecl/hash is available, any algorithm this extension provides can be used.                                 | 
                            
                                                                    
                                                    
                                | 0.18.1 | 
                                
                                    * Fixed build with PHP-4 and PHP-5.0                                 | 
                            
                                                                    
                                                    
                                | 0.18.0 | 
                                
                                    + Added INI setting http.force_exit which can be used to disable script termination 
  in case of redirects and positive cache hits (instead, standard output will be discarded) 
+ Classes HttpMessage and HttpRequestPool implement Countable if PHP >= 5.1 with SPL is available 
+ Class HttpMessage implements Serializable if PHP >= 5.1 is available 
+ Added experimental http.chunked_encode and chunked_decode stream filter 
 
* Fixed a bug that caused a warning about an invalid curl handle at HttpRequestPool destruction 
* Fixed a bug with http_get_request_headers() modifying $_SERVER array 
* Fixed a bug which required "=" in Content-Range response message headers 
* Fixed a bug with directly setting HttpMessage property values                                 | 
                            
                                                                    
                                                    
                                | 0.17.0 | 
                                
                                    + Added experimental thread safety for builds linking against libcurl-gnutls 
+ Improved the chunked decoder 
+ Added clone support to HttpRequest objects 
 
- License changed from PHP license to revised BSD license! 
- HttpMessage properties are not accessible by reference or array index/key! 
- HttpRequest history logging is disabled by default! 
- HttpRequestPool is not clonable! 
 
* Fixed a bug where HttpRequest warnings were hidden within the HttpRequestPool 
* Fixed shared build within the PHP source tree 
* Fixed parallel build with ext/zlib on Win32 
* Fixed object deallocation 
* Fixed http_support() pretending no support for SSL in non-threadsafe builds 
* Fixed the message parser to not choke on headers containing HTTP/1.x 
* Fixed access to protected HttpMessage properties in extending classes 
* Fixed lots of tests for the changed HTTP header order in PHP-5.1                                 | 
                            
                                                                    
                                                    
                                | 0.16.0 | 
                                
                                    + Added ext/zlib independant GZIP support 
+ Added HttpRequestPool::getAttachedRequests() and getFinishedRequests()                                 | 
                            
                                                                    
                                                    
                                | 0.15.0 | 
                                
                                    + Updated documentation (a lot) 
+ Added optional third parameter to HttpRequest::__construct() accepting an array with options 
+ Added compression functions gzencode/gzdecode, deflate/inflate, compress/uncompress 
+ Added http_support() for probing features that depend on external libraries 
 
- Renamed http_absolute_uri() to http_build_uri() (complements with http_build_query()) 
- Changed the signature of the negotiator to fill the second parameter with the results array 
 
* Fixed several ETag issues 
* Fixed HttpRequestPools detach() and attach() methods when the iterator is active 
* Fixed parsing messages with Content-Range headers 
* Fixed parsing messages with another Transfer-Encoding header value than chunked                                 | 
                            
                                                                    
                                                    
                                | 0.14.2 | 
                                
                                    * Fixed caching by Last-Modified with dates in october                                 | 
                            
                                                                    
                                                    
                                | 0.14.1 | 
                                
                                    * Fixed PHP-5.0 build                                 | 
                            
                                                                    
                                                    
                                | 0.14.0 | 
                                
                                    + Added missing support for raw post data in HttpRequest 
+ Added missing HttpMessage::setBody() 
+ Added HttpRequest::METH_* constants 
+ Added HttpRequest::AUTH_* constants 
+ Added HttpMessage::ENGINE_* constants 
+ Added HttpResponse::ETAG_* constants 
+ Added HTTP_ETAG_MHASH_* constants 
+ Added supported ETag hash algrithms to php_info() output 
+ Added ETag hashing through PHPs CRC32() implementation 
+ Added new language/charset negotiator 
 
* Changed HttpMessage::toString([include_parent = true]) to false 
* Renamed HTTP_GET etc. constants to HTTP_METH_GET 
* Fixed protected property access                                 | 
                            
                                                                    
                                                    
                                | 0.13.0 | 
                                
                                    + HTTP request method API is now available for builds without libcurl, too 
+ Added HttpResponse::guessContentType() through libmagic 
 
- Removed HttpResponse class from PHP-5.0 (WONKY) due to ZE limitations 
 
* Improved the build system 
* Imrpoved logging format 
* Implemented SSL crypto locks for thread safe builds 
* Fixed ridiculous low default transfer timeout of 3 seconds (set to 0 now) 
* Fixed a bug where plain instead of more specific HttpExceptions were thrown 
* Fixed a bug where entities that where not marked for being cached were 
  actually cached if an apropriate ETag or Last-Modified header was seen 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.12.0 | 
                                
                                    + Added ETag generation through libmhash 
+ Added http_parse_message() 
+ Added single LF awareness to the parsers 
+ Added HttpResponse::setHeader(), HttpResponse::getHeader(), HttpResponse::status() 
+ Added HttpResponse::status() 
+ Added constants HttpMessage::NONE, Http_Message::REQUEST, HttpMessage::RESPONSE 
+ Added Content-Length header if HttpResponse sends full plain entity 
+ Added ZendEngine workaround for internal class' static properties (HttpResponse) 
+ Added HttpRequestPool::socketPerform() 
 
- Removed http_split_response() 
- Removed AuthBasic hooks 
- Removed HttpResponse::sendHeader(), HttpResponse::sendStatus() 
- Removed HttpRequest::unset*() methods, now handled through set*() with empty parameter 
- Removed HttpRequestPool::socketRead(), HttpRequestPool::socketSend() 
 
* Fixed initialization and cleanup of module globals 
* Fixed builds and tests without libcurl 
* Fixed access of request headers through $_SERVER 
* Fixed check for ext/session in http_redirect() 
* Fixed custom ETags and Last-Modified dates in HttpResponse 
* Fixed PHP4 build 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.11.0 | 
                                
                                    * Fixed HttpRequest with redirects 
* Fixed http.allowed_methods INI entry 
+ Added HTTP specific exceptions 
+ Added http.only_exceptions INI entry 
+ Added HttpRequest::$recordHistory and HttpRequest::getHistory() 
- Removed the ondebug callback option for requests 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.10.1 | 
                                
                                    * fixed installation through the PEAR installer 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.10.0 | 
                                
                                    * changed HttpResponse to a completely static class, please see docs/functions.html for reference 
* added http_get_request_body() 
* several bug fixes 
* added test files 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.9.0 | 
                                
                                    * added HttpRequestPool class (PHP5) 
* added missing files to package.xml 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.8.0 | 
                                
                                    * renamed ob_httpetaghandler to ob_etaghandler 
* http_chunked_decode() now silently passes through apparently not encoded data 
* added HttpMessage class and HttpException (PHP5 only) 
* added http.cache_log INI directive 
* added throttling capability to http_send()/HttpResponse 
* added hooks for custom request methods 
* added PUT support 
* added http_match_request_header() 
* added clean_ob parameter to HttpResponse::send() 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.7.0 | 
                                
                                    * Renamed HTTPi to HttpUtil 
* Renamed HTTPi_Request to HttpRequest 
* Renamed HTTPi_Response to HttpResponse 
* Added several methods to HttpRequest: unsetOptions(), addHeaders(array), 
  getHeaders(), unsetHeaders(), addCookies(array), getCookies(), unsetCookies(), 
  setSslOptions(array), getSslOptions(), unsetSslOptions() 
* Improved HTTP ranges support 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.6.1 | 
                                
                                    * fixed overflow in http_split_response() 
- removed HTTPi_Request::getResponseHeaders() 
+ added HTTPi_Request::getResponseCode() 
+ added HTTPi_Request::getResponseHeader([string name]), allowing retrieval of single header values 
+ HTTPi_Request::getResponseInfo([string name]) now allows retrieval of single info values 
+ vastly enhanced http_absolute_uri() 
   
                                 | 
                            
                                                                    
                                                    
                                | 0.6.0 | 
                                
                                    + added POST support to HTTPi_Request 
+ added some more curl options 
+ better recognition of older libcurl versions 
* internal API optimizations 
                                 | 
                            
                                                                    
                                                    
                                | 0.5.1 | 
                                
                                    * added some compatibility checks for older libcurl versions 
* fixed some memory leaks 
* fixed a typo which made http_split_response() useless 
* fixed HTTPi_Request object destruction                                 | 
                            
                                                                    
                                                    
                                | 0.5.0 | 
                                
                                    * added ob_httpetaghandler() (has major limitations compared to http_cache_etag()) 
* smarter ob handling in http_cache_etag() - used buffers will be fetched, freed 
  and piped through again, so that everything passes the etag ob handler 
* added static final HTTPi class (PHP5) providing fairly every function as static method 
* added HTTPi_Response class (PHP5) 
* added HTTPi_Request class, only HEAD/GET support for now (PHP5/curl) 
* renamed http_content_type() and http_content_disposition() to http_send_*                                 | 
                            
                                                                    
                                                    
                                | 0.4.0 | 
                                
                                    * No need to initialize $info in http_(get|head|post*) functions anymore 
* Array keys of $info in http_(get|head|post*) functions are now lower case 
* Added http_get_request_headers() 
* Added http.allowed_methods INI entry 
* Fixed memory corruption in http_parse_headers() with empty header values 
* Fixed ETag caching 
* Fixed http_send_data() 
* Correctly send the full entity if the clients Range header is syntactically invalid                                 | 
                            
                                                                    
                                                    
                                | 0.3.0 | 
                                
                                    * ctype is now mandatory 
* implemented additional third/fourth informational parameter to http_(get|head|post*) 
  which will be filled with an associative array containing request/response information 
* removed http_accept_ranges() 
* output "Redirecting to <a>URI</a>." in http_redirect() for full RFC compliance 
* fixed http_cache_last_modified(): if parameter was omitted, would have always sent 304 Not Modified 
* added http_parse_headers()                                 | 
                            
                                                                    
                                                    
                                | 0.2.0 | 
                                
                                    * fixed http_chunked_decode() and http_get_request_ranges()  
  (broken by a naive fix for signed/unsigned mismatches) 
* added own imlementation for a RFC822 compliant HTTP date 
* added http_auth_basic() and http_auth_basic_cb()                                 | 
                            
                                                                    
                                                    
                                | 0.1.0 | 
                                
                                    * 1st release                                 |