Release 4.1.5
-------------------

This is a maintenance release that fixes a number of issues discovered since 4.1.4.

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

* Upgraded HttpCore to version 4.4.15 and HttpClient to version 4.5.13.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPASYNC-160: HttpAsyncClient in INACTIVE or STOPPED state throws a IllegalStateException
  causing the current thread to terminate.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPASYNC-156: Possible deadlock condition in case of concurrent connection request
  completion and cancellation.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPASYNC-155: Runtime exception in AbstractClientExchangeHandler can cause the I/O reactor
  to shut down.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Added connection time to live parameter to HttpAsyncClientBuilder.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Bug fix: PipeliningClientExchangeHandlerImpl to fail result future in case of an execution
  failure.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* HTTPASYNC-152: InternalIODispatch#createConnection to throw CancelledKeyException instead
  of IllegalStateException.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.1.4
-------------------

This is a maintenance release that adds Automatic-Module-Name to the manifest for compatibility
with Java 9 Platform Module System and fixes a number of issues discovered since 4.1.3


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

* Add Automatic-Module-Name in manifest so Java9 modular applications can depend on this library.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Upgraded HttpCore dependency to version 4.4.10; upgraded HttpClient dependency to version 4.5.6.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Pass the original request as a parameter to the redirect handler.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-135] HttpAsyncMethods.createHead() methods creates HttpGet objects.
  Contributed by Mateusz Matela <mateusz dot matela at gmail dot>

* [HTTPASYNC-136]: Failing tests on Fedora 28 due to weak encryption algorithms in test keystore.
  Contributed by Gary Gregory <ggregory at apache.org> and Michael Simacek <msimacek at redhat dot com>

* [HTTPASYNC-126] Increase range of commons-logging in OSGI manifest

* [HTTPASYNC-118] HttpAsyncClientBuilder to use SystemDefaultCredentialsProvider by default when configured
  to use system properties.
  Contributed by Oleg Kalnichevski <olegk at apache.org>


Release 4.1.3
-------------------

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

* HttpCore upgraded to version 4.4.6

* HttpClient upgraded to version 4.5.3

* [HTTPASYNC-110] Default exchange handler fails to correctly re-use fully established tunnelled connection
  leased from the pool when CONNECT request results in 407 over connection that cannot be kept alive.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-116] Correct cancellation of client message exchange.
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* Fix HttpAsyncMethods#createPost/createPut(URI,byte[],ContentType): set entity to request
  Contributed by Dmitry Potapov <dpotapov at yandex-team.ru>



Release 4.1.2
-------------------

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

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

* HttpCore upgraded to version 4.4.5

* HttpClient upgraded to version 4.5.2

* [HTTPASYNC-105] socketTimeout is not reset back to default after a request that has specific 
  timeout
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-101 CachingHttpAsyncClient to create default HttpContext if none specified
  Contributed by Oleg Kalnichevski <olegk at apache.org>

* [HTTPASYNC-97] Upgraded HttpClient OSGi dependency to 4.5
  Contributed by Oleg Kalnichevski <olegk at apache.org>



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
