Added addCSV method to HttpFields to more efficiently add values to a CSV field without duplicates.
Improved usage of QuotedCSV and removed older parsing
Used new method in GazipHttpOutPutInterceptor to avoid duplicate Vary fields
If a request is not handled within the scope of the GzipHandler, the gzip interceptor is removed so it cannot be used by any subsequent handlers.
If the request is handled, it is left in place to be used by any async handling.
The new IPv6 capable InetAddressSet has been added as an alternative for IPAddressMap
The IncludeExclude class has been generalized to IncludeExcludeSet that can have a different
Predicate type to the set type and this works well with InetAddressSet.
However for #881 and #883, this may not be enough and Map semantics may need to be added.
The IPAccessHandler also has path mappings supported, which could need the map semantics, so for now a new InetAccessHandler has been
added that just uses an IncludeExcludeSet<InetAddressSet>, but this has yet to be tested.
The AbstractProxyServlet uses a host:port combinations, so IncludeExcludeSet<InetAddressSet> is not directly applicable.
Fixed race condition where the prime request response was arriving to
the client before the server had finished to clean up and remove the
prime stream. Subsequent client requests were rejected because the
prime stream was still "alive".
* Issue #824 - Implement notifications of asynchronous error conditions for HTTP/2.
Introduced new method HttpChannelState.asyncError() to be called in
case of asynchronous errors, i.e. those errors that do not happen in
the HttpChannel.handle() loop.
Implemented HTTP/2 callbacks to call HttpChannelState.asyncError()
and plug in the existing error handling mechanism.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
* Issue #824 - Implement notifications of asynchronous error conditions for HTTP/2.
Improved implementation to ignore idle timeouts for streams and
session in case that requests are being handled, matching the HTTP/1.1
behavior.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>