Release 4.1.1
-------------------

This is a maintenance release that fixes a number of issues discovered since 4.1 and upgrades
HttpCore and HttpClient dependencies.

Changelog
-------------------

* HttpCore upgraded to version 4.4.4

* HttpClient upgraded to version 4.5.1

* [HTTPASYNC-92] Fixed osgi bundle imports (added missing 'org.apache.http.ssl')
  Contributed by Daniel Kulp <dkulp at apache.org>

* HttpAsyncClientBuilder ignores UseSystemProperties setting when initializing SSL context
  Contributed by Oleg Kalnichevski <olegk at apache.org>




Release 4.1
-------------------

This is the first stable (GA) release of HttpAsyncClient 4.1. Notable features and enhancements 
included in 4.1 series are:

* Support for pipelined request execution 

* Support for the latest HTTP state management specification (RFC 6265). Please note that the old 
cookie policy is still used by default for compatibility reasons. RFC 6265 compliant cookie 
policies need to be explicitly configured by the user. Please also note that as of next feature 
release support for Netscape draft, RFC 2109 and RFC 2965 cookie policies will be deprecated 
and disabled by default. It is recommended to use RFC 6265 compliant policies for new applications 
unless compatibility with RFC 2109 and RFC 2965 is required and to migrate existing applications 
to the default cookie policy.

* Enhanced, redesigned and rewritten default SSL hostname verifier with improved RFC 2818
compliance

* Default SSL hostname verifier and default cookie policy now validate certificate identity 
and cookie domain of origin against the public suffix list maintained by Mozilla.org
<https://publicsuffix.org/list>

* Authentication cache thread-safety: authentication cache used by HttpClient is now thread-safe
and can be shared by multiple threads in order to re-use authentication state for subsequent
requests


Changelog:
-------------------

* [HTTPASYNC-90] Fixed SNI support.
  Contributed by David <dblack at atlassian.com>

* [HTTPASYNC-88] persistent connections can time out while kept alive in the pool
  causing unexpected SocketTimeoutException
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-86]: fixed a race condition upon connection lease from the connection pool:
  in very rare  circumstances the main execution thread can get jammed for so long
  that the I/O dispatch thread succeeds in completing the request and releasing the connection
  while the main still is performing connection validation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Update Apache Commons Logging version from 1.1.3 to 1.2. 
  Contributed by Gary Gregory <ggregory at apache.org>


Release 4.1 BETA1
-------------------

This is the first BETA release of HttpAsyncClient 4.1. Notable features and enhancements included
in 4.1 series are:

* Support for pipelined request execution 

* Enhanced redesigned and rewritten default SSL hostname verifier with improved RFC 2818
compliance

* Default SSL hostname verifier and default cookie policy now validate certificate identity 
and cookie domain of origin against the public suffix list maintained by Mozilla.org
<https://publicsuffix.org/list>

* Authentication cache thread-safety: authentication caches used by HttpAsyncClient is now 
thread-safe and can be shared by multiple contexts in order to re-use authentication state for 
subsequent requests


Release 4.0.2
-------------------

HttpAsyncClient 4.0.2 (GA) is a bug fix release that addresses several issues reported since 
release 4.0.1. This release also upgrades HttpClient dependency to the latest stable version. 

All users of HttpAsyncClient 4.0 are strongly advised to upgrade.

Changelog
-------------------

* [HTTPASYNC-79] Rearranged sequence of operations upon connection lease to eliminate possibility
  of a connection leak due to race condition on keep-alive boundary
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Replaced dynamic proxies with custom proxy classes to reduce thread contention.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-73] Original request headers are not copied upon redirect
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.0.1
-------------------

This maintenance release fixes a number of bugs including incorrect OSGi bundle metadata
found since release 4.0. This release also upgrades HttpCore and HttpClient dependencies to 
the latest stable versions. 

All users of HttpAsyncClient 4.0 are advised to upgrade.

Changelog
-------------------

* [HTTPASYNC-69] Premature cancellation of the response consumer to immediately shut down
  and release the underlying connection.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-68] Connection closed by the opposite endpoint immediately upon its lease from
  the pool is never released back and reclaimed by the pool (collection leak).
  Contributed by Dmitry Potapov <potapov.d at gmail.com>

* Persistent connections always get discarded in case of a response future cancellation
  even if they can be kept alive.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-64] Race conditions in async caching module.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-65] Relaxed OSGi dependency import version ranges
  Contributed by Christian Schneider <chris at die-schneider.net> 

* [HTTPCLIENT-1446] NTLM proxy + BASIC target auth fails with 'Unexpected state:
  MSG_TYPE3_GENERATED'.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-63] ConnectionShutdownException thrown in case of out-of-sequence response.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPCLIENT-1442] Authentication header set by the user gets removed in case
  of proxy authentication.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-60] Fixed incorrect OSGi Symbolic-BundleName.
  Contributed by M. van Cuijk <mark at phedny.net>



Release 4.0
-------------------

This is the first stable (GA) release of Apache HttpAsyncClient 4.0. HttpAsyncClient is a library 
for asynchronous client-side HTTP communication built on top of HttpCore NIO transport. 
It is a complementary library to Apache HttpClient intended and optimized for special cases 
whereby ability to scale to many thousands of concurrent connections is more important than 
performance in terms of raw data throughput. 

HttpAsyncClient 4.0 is designed to have similar APIs as Apache HttpClient 4.3 and a comparable
feature set. In addition HttpAsyncClient provides full support for zero-copy file upload and 
download operations. It presently does not support transparent content decompression and automatic 
I/O error recovery. These features may be added in future releases.


Changelog:
-------------------

* [HTTPASYNC-56] Fixed thread deadlock in DefaultClientExchangeHandlerImpl.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-57] HTTPS request execution via a HTTP proxy can cause an infinite loop.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-52] Proxy configuration set at the request level does not apply.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-51] Request producers do not get correctly reset if the server responds early 
  (out of sequence), which can cause entity enclosing requests to be malformed in case of 
  re-execution.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-45] CachingHttpAsyncClient to override Future returned by the backend.
  Contributed by James Leigh <james at 3roundstones dot com>


Release 4.0 Beta 4
-------------------

The 4.0 BETA4 release delivers significant performance improvements in request execution,
especially for short HTTP messages, and also re-aligns programming interfaces used by the library 
with HttpCore 4.3 and HttpClient 4.3 APIs. Configuration and preference APIs of HttpAsyncClient
are now consistent with those used by HttpClient 4.3.

Users of previous releases of HttpAsyncClient are advised to upgrade.

Changelog:

* [HTTPCLIENT-1353] 303 Redirects Should be Cacheable
  Contributed by James Leigh <james at 3roundstones dot com>

* Redesign of configuration and preference APIs. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Redesign of connection management APIs.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-34] HttpAsyncClient fails to re-start request execution if the opposite end 
  prematurely terminates persistent connection. 
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-28] PoolEntry's expiry information is never updated.
  Contributed by Daniel Kulp <dkulp at apache.org>



Release 4.0 Beta 3
-------------------

The 4.0 BETA3 is a maintenance release that picks up the latest bug fixes in the core components.

Changelog:

* Upgraded HttpCore to version 4.2.2

* [HTTPASYNC-26] OSGi bundle import fix.
  Contributed by Daniel Kulp <dkulp at apache.org>

* [HTTPASYNC-25] AsyncSchemeRegistry instance set in the execution context takes precedence over
  the default one.
  Contributed by Daniel Kulp <dkulp at apache.org> 

* Ported fix for HTTPCLIENT-1224
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 2
-------------------

The 4.0 BETA2 release fixes a number of non-critical issues found since release 4.0-beta1 and 
introduces basic support for HTTP/1.1 response caching. Please note that caching for streaming 
HTTP exchanges is currently not supported.

Users of previous releases of HttpAsyncClient are advised to upgrade.

Changelog:

* [HTTPASYNC-20] HTTP exchange can now be aborted with HttpUriRequest#abort().
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-17] Caching HttpAsyncClient facade.
  Contributed by Clinton Nielsen <clinton.h.nielsen at gmail.com>

* [HTTPASYNC-19] Fixed incorrect execution of message exchanges that span across multiple hosts 
  (for instance, in case of a request redirect).  
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-18] Fixed thread deadlock that could occur in the DefaultAsyncRequestDirector 
  in case of a runtime exception.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-15]: HttpAsyncClient hangs if connection leased from the pool gets immediately closed 
  by the opposite endpoint.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Beta 1
-------------------

The 4.0 BETA1 release completes the application programming interface and the feature set 
of HttpAsyncClient and upgrades to the latest versions of core and client components 
(HttpCore 4.2-beta1 and HttpClient 4.2-beta1). As of this release HttpAsyncClient is expected
to be API stable.

Users of previous releases of HttpAsyncClient are advised to upgrade.

Changelog:

* [HTTPASYNC-11]: HttpAsyncClient fails to re-authenticate if connection is non-persistent.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-5]: Allow customized LineParser for asynchronous connections.
  Contributed by Oleg Kalnichevski <olegk at apache.org>



Release 4.0 Alpha 3
-------------------

The 4.0 ALPHA3 release largely completes the application programming interface and feature set 
of HttpAsyncClient. While the API may still change in the course of the ALPHA development phase, 
this is expected to be the last round of major API changes and the API is expected to be reasonably
stable as of this release.

We are kindly asking actual and prospective users of HttpAsyncClient to review its API, evaluate
its functionality and give us feedback while the 4.0 API is still not final. If no major flaws 
are discovered the 4.0 API is expected to be frozen with the next BETA release. 

Changelog:

* [HTTPASYNC-6]: Fixed NPE in the DefaultAsyncRequestDirector#responseCompleted method.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Alpha 2
-------------------

The second ALPHA release of HttpAsyncClient 4.0 comes with a number of important improvements and
enhancements. As of this version HttpAsyncClient fully supports HTTP state management (cookies) 
and HTTP authentication (basic, digest, NTLM, spnego/kerberos). Connection management classes have 
been thoroughly reworked and improved. This version also improves support for zero copy file 
upload / download operations.

The HttpAsyncClient 4.0 API is still considered experimental and is expected to change 
in the course of the ALPHA development phase.

Please note that currently HttpAsyncClient DOES NOT support

* Stateful HTTP connections


Changelog:

* [HTTPASYNC-3]: Fixed incorrect handling of expired I/O sessions by SessionPool.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.0 Alpha 1
-------------------

HttpAsyncClient is a library for asynchronous client-side HTTP communication built on HttpCore NIO
and HttpClient components.

HttpAsyncClient is NOT meant to replace or supersede Apache HttpClient. It is a complementary
library to Apache HttpClient intended for special cases where ability to handle a great number of
concurrent connections is more important than performance in terms of a raw data throughput or
for those users who prefer event-driven APIs.

The HttpAsyncClient 4.0 API is still very experimental and is expected to change in the course
of the ALPHA development phase.

Please note that currently HttpAsyncClient DOES NOT support

* HTTP state management (cookies)
* HTTP authentication
* Stateful HTTP connections
