Commit Graph

667 Commits

Author SHA1 Message Date
Gary Gregory 712148ecc3 Remove redundant modifiers.
- All methods in a final class are already final.
- All members of an interface are public.
- All inner enums are static.
2020-11-24 09:22:25 -05:00
Gary Gregory 956b8194ff Simplify if/else. 2020-11-24 09:22:25 -05:00
Koji Lin bf1822c55e
Fix NPE when H2/Async client interceptors are added using first/last (#268) 2020-11-06 09:49:55 +01:00
Oleg Kalnichevski f6333a5001 HTTPCLIENT-2126: `InternalAbstractHttpAsyncClient` incorrectly handles response messages with no enclosed entity 2020-11-06 09:40:23 +01:00
Artem Smotrakov feb0377476 Fixed several findings from LGTM.com
- Fixed a few possible null dereferences
- Fixed a few possible out-of-bound array ops
- Added a couple of test cases
2020-10-30 15:51:50 +01:00
Gary Gregory 65c6c25070 [HTTPCLIENT-2124] NullPointerException in MinimalHttpClient.doExecute(HttpHost, ClassicHttpRequest, HttpContext) (#261) 2020-10-25 23:11:14 +01:00
Oleg Kalnichevski 1026a1e558 HTTPCLIENT-2122: async client to throw `HTTP/2 tunneling not supported` protocol exception in case of `force HTTP/2` version policy used along with request proxy routing 2020-10-22 20:27:28 +02:00
Oleg Kalnichevski e73b33c18b HTTPCLIENT-2123: H2AsyncClientBuilder incorrectly adds last request interceptors to the head of the interceptor list 2020-10-21 19:39:05 +02:00
Oleg Kalnichevski a2df6f1e32 HTTPCLIENT-2119: added missing system properties to HttpClientBuilder javadocs 2020-10-17 12:17:15 +02:00
Varun Sivapalan f9b46db6e0 Fix typo in enum 2020-10-06 10:17:11 +02:00
Oleg Kalnichevski 12a6579513 HTTPCLIENT-2118: Corrected PoolingHttpClientConnectionManager javadocs 2020-10-03 12:15:40 +02:00
Oleg Kalnichevski 918ac1535f RFC 3986 conformance: corrected handling of path segments by `URIUtils#normalizeSyntax`; optimized path segment operations 2020-09-27 12:36:29 +02:00
Oleg Kalnichevski 6395fa7c79 RFC 3986 conformance: revised and optimized `URIUtils#extractHost` 2020-09-27 12:36:28 +02:00
Oleg Kalnichevski 0524eed4b9 Replaced deprecated URLEncodedUtils 2020-09-27 12:36:28 +02:00
Oleg Kalnichevski ee26e23b31 Replaced deprecated TokenParser 2020-09-27 12:36:28 +02:00
Oleg Kalnichevski ee5437c1f1 Upgraded HttpCore dependency to version 5.1-beta1 2020-09-27 12:36:28 +02:00
Michael Osipov 5000f34690 Use decimal numbers for endpoint/execution IDs
This closes #249
2020-09-27 12:33:50 +02:00
Oleg Kalnichevski 1c55aa1548 HTTPCLIENT-2106: Added charset parameter for DigestScheme 2020-09-27 12:33:50 +02:00
Carter Kozak 1a70490aac HTTPCLIENT-2103: ManagedHttpClientConnectionFactory provides a fluent builder 2020-09-27 12:33:50 +02:00
Oleg Kalnichevski ae6725056c HTTPCLIENT-2116: Incorrect request message composition when routing requests via a proxy 2020-09-19 15:35:48 +02:00
滕杰1 20266db737 PoolingAsyncClientConnectionManager incorrectly emits Ping commands to HTTP/1.1 endpoints #255 2020-09-16 11:27:41 +02:00
Oleg Kalnichevski feaa72e6e1 HTTPCLIENT-2115: HttpAsyncClientBuilder and H2AsyncClientBuilder fail to take `replaceExecInterceptor()` into account 2020-09-08 16:30:08 +02:00
Carter Kozak 45c45d53e0
HTTPCLIENT-2112: AbstractMultipartFormat respects ByteBuffer.arrayOffset (#253) 2020-08-28 08:05:32 -04:00
Carter Kozak fa08f54077
HTTPCLIENT-2109: Fix RequestConfig.Builder#setConnectionKeepAlive javadoc (#252) 2020-08-23 11:50:21 -04:00
Michael Osipov 3360a69cd2 HTTPCLIENT-2078: Log debug message when no credentials for given auth scope are found
This closes #251
2020-08-18 21:31:25 +02:00
Carter Kozak 4f47c4abc0 HTTPCLIENT-2107: Threadsafe PoolingHttpClientConnectionManager field volatile access 2020-08-11 12:12:19 +02:00
Oleg Kalnichevski f6da2bac6f HTTPCLIENT-2105: async clients incorrectly handle redirects of requests with enclosed entity 2020-08-09 22:48:30 +02:00
Oleg Kalnichevski ff6308a69f HTTPCLIENT-2100: incorrect handling of EXTENDED mode by MultipartEntityBuilder 2020-07-16 15:43:30 +02:00
Carter Kozak 5bdcb242f0
HTTPCLIENT-2099, HTTPCLIENT-2091: SSLConnectionSocketFactory connect timeout fix (#241)
SSLConnectionSocketFactory no longer overrides the socket timeout
with the connect timeout when an unlimited socket timeout is
configured. This matches behavior of HTTPCLIENT-2091.

Note that in scenarios where SocketConfig sets an infinite timeout
and the RequestConfig sets a bounded timeout, this change results
in the connect-timeout no longer applying to the TLS handshake.
This behavior can be retained by setting the expected timeout in
the SocketConfig.
2020-07-11 17:18:42 +02:00
Gary Gregory 66f8ca1f09
BasicExpiresHandler is annotated as immutable but is not. (#240) 2020-07-10 08:57:24 -04:00
Carter Kozak 9866865357 HTTPCLIENT-2096: Migrate instance loggers to static fields
Note that this may change the origin of logging when classes
have been subclassed, as the logger origin will use the class
name that defined the logger where previously the subclass type
would be used. In scenarios where external libraries subclass
httpclient utilities this allows httpclient logging to maintain
the `org.apache.hc` prefix instead of inheriting arbitrary
subclass names.

Using some logging frameworks this may result in reduced churn
when httpclient components are created (new connections, for example)
because loggers are looked up once per class.
2020-07-09 11:34:48 +02:00
Carter Kozak 93e3d0f452 HTTPCLIENT-2097: Fix PoolingAsyncClientConnectionManager boxed primitive reference equality 2020-07-06 18:33:22 +02:00
slisaasquatch ec82acc858
MultipartEntityBuilder#generateBoundary optimization (#233) 2020-07-04 09:49:07 +02:00
Carter Kozak 84bd290954
HTTPCLIENT-2095: Use slf4j interpolation instead of string concatenation where possible (#232) 2020-07-02 17:51:43 +02:00
Carter Kozak 517e5c8d94 HTTPCLIENT-2094: ConnectionManager validateAfterInactivity zero duration agreement
Both connection managers agree on the meaning of a zero-duration
validateAfterInactivity value. Previously the documentation for
both suggested that zero resulted in no validation, however
the classic client would validate prior to each request and
the async client would never validate.
This commit standardizes behavior on the classic client, which
is consistent with hc4.x, allowing zero to force validation prior
to every request.
2020-07-02 11:29:22 +02:00
Oleg Kalnichevski da28440a58 RFC 7235 compliance, HTTPCLIENT-2086: fixed parsing of token68 based (base64-encoded) auth schemes. 2020-07-01 12:28:03 +02:00
Oleg Kalnichevski 445b61a01a HTTPCLIENT-2091: Connect timeout is used instead of socket timeout after a tls upgrade 2020-06-30 12:24:25 +02:00
Oleg Kalnichevski f268d192d4 HTTPCLIENT-2084: client builders incorrectly add message interceptors with LAST position to the head of the list 2020-06-17 12:44:04 +02:00
Carter Kozak a22d889807 HTTPCLIENT-2083: Fix NPE when classic client interceptors are added
Previously HttpClientBuilder methods addExecInterceptorFirst and
addExecInterceptorLast resulted in NullPointerExceptions because
the execInterceptors list had not been initialized yet.
2020-06-12 10:24:45 +02:00
smashtakov 546351160b fix typo log debug messages 2020-06-03 11:59:51 +02:00
Oleg Kalnichevski 9cfdd54c94 Bug fix: classic connection managers fail to take #isConsistent() flag into account when re-using persistent connections 2020-05-27 16:37:37 +02:00
vonahok 76a12fc4c6
HTTPCLIENT-2077: Authentication failure due to incorrect NTLM auth value check (#223) 2020-04-26 17:08:15 +02:00
Oleg Kalnichevski e26d537658 HTTPCLIENT-2051: corrected handling of 303 redirects 2020-04-24 12:16:57 +02:00
Oleg Kalnichevski 177fc804e5 HTTPASYNC-160: HttpAsyncClient in INACTIVE or STOPPED state throws a IllegalStateException causing the current thread to terminate 2020-04-18 20:41:21 +02:00
heejeongkim 12ec6f15ea
HTTPCLIENT-2076: fix NPE in LaxExpiresHandler (#222) 2020-04-17 11:14:21 +02:00
Oleg Kalnichevski 3e484c0830 HTTPCLIENT-2074: disallow direct execution of CONNECT methods by standard client implementations 2020-04-08 14:58:38 +02:00
Oleg Kalnichevski a93d5c0c1d HTTPCLIENT-2073: (regression) WindowsNegotiateScheme incorrectly rejects empty NTLM challenge 2020-04-05 13:22:13 +02:00
Oleg Kalnichevski 9ea79c68c5 Minor tweaks to auth execution logging 2020-04-05 12:43:26 +02:00
Oleg Kalnichevski 92100e13a6 HTTPCLIENT-2069: RequestConfig#copy does not copy #responseTimeout 2020-03-31 14:00:01 +02:00
Oleg Kalnichevski 98daeabc05 HTTPCLIENT-2061: corrected sequence of request execution interceptors in classic HttpClient 2020-03-17 14:51:19 +01:00
slisaasquatch ffa0530bb2 Fix NPE for null HttpContext in minimal async clients 2020-03-07 11:09:04 +01:00
slisaasquatch 99f7d2b710 Removed unnecessary BasicFuture wrapping 2020-03-07 11:07:05 +01:00
Oleg Kalnichevski 56ef8b8642 Use try-with-resources in examples 2020-02-24 12:07:55 +01:00
Oleg Kalnichevski 24b3f71a8f Removed deprecated methods 2020-02-19 09:37:46 +01:00
Oleg Kalnichevski 53e172553d HTTPCLIENT-2051: Change POST to GET for 301, 302 and 303 redirects. Other unsafe methods to be redirected as is. 2020-02-17 14:56:31 +01:00
Oleg Kalnichevski 42cae6999c Use finite (3 minutes) connection keep-alive period by default 2020-02-17 09:12:39 +01:00
Oleg Kalnichevski 934a6d5e77 Removed dodgy work-around for resumed TLS sessions given that JDK-8212885 fix has been ported to Java 11 and released in Oracle JDK 11.0.3 2020-02-15 14:46:59 +01:00
Oleg Kalnichevski 5bcf6b61f3 Bug fix: custom SSL context is ignored 2020-02-14 10:37:03 +01:00
Ryan Schmitt 6559b60342 DefaultHttpRequestRetryStrategy: Allow zero retry interval 2020-01-30 11:21:35 -08:00
Gary Gregory d1c4199db3
No need to use the type name of an input arg in the method name. (#208)
* No need to use the type name of an input arg in the method name.

* Do not use input type names in method names.
2020-01-29 19:20:05 -05:00
Oleg Kalnichevski 4401991d93 HTTPCLIENT-2047: fixed regression in DefaultHostnameVerifier causing rejection of certs with non-standard domains.
This reverts commit 87cc64fc
2020-01-29 09:44:39 +01:00
Oleg Kalnichevski 3575cff3dc Bug fix: fixed handling of private domains by PublicSuffixMatcher 2020-01-29 09:43:19 +01:00
Gary Gregory 95dbbf099b Now that ClassicHttpRequests is no longer an enum, we need to way to
generically build requests from method names. Update all factory classes
with matching APIs for Method and String method name inputs.

(#204), (#205)
2020-01-28 23:11:56 +01:00
Michael Osipov 5a8a6d0fc8 Convert convenience builders form enums to final classes
Turn exhaustive enum builder pattern to a final class with builder
methods serving HTTP request objects.

This closes #202
2020-01-19 20:23:33 +01:00
Oleg Kalnichevski 303e435d79 Domain name normalization 2020-01-14 11:01:59 +01:00
Gary Gregory 071fa68a3c
Misc clean ups. (#200) 2020-01-09 11:45:04 -05:00
Michael Osipov 0812192f46 Rename CookieSpecs enum to StandardCookieSpec final class
Modeled after StandardCharsets, the new class indicates a non-exhaustive
list of standard cookie specifications by name supported by the HttpClient.
The previous enum suffered from two issues:

* it was exhaustive implying that no more cookie specifications can be supported
* its sole purpose was to contain an id for the declared cookie specification;
  the enum values theirselves were never used directly

This also reuses the naming approach of HttpMultipartMode of symbolic names for
implementation behavior.

This closes #197
2020-01-08 17:29:09 +01:00
Ryan Schmitt 87cc64fc88 DefaultHostnameVerifier: Match DNS and CN names against ICANN domains
This change ensures that during hostname verification the public suffix
list is only used to prevent wildcard matching against entire TLDs (e.g.
`*.com`). Currently, private domains are also being matched against,
which is preventing reasonable wildcards (such as
`*.s3.eu-central-1.amazonaws.com`) from being respected.
2020-01-07 10:09:02 -08:00
Ryan Schmitt 3aec96d3db Upgraded HttpCore to version 5.0-beta11 2020-01-07 15:41:18 +01:00
Michael Osipov 3730b03a99 Properly distinguish between AuthScheme and auth scheme name
Throughout the code the terms 'authScheme' and 'scheme' have been used
synonymously for an AuthScheme instance and a string-based auth scheme
name. To avoid confusion, fields, methods and variable have been adapted
to distinguish both properly. If necessary, Javadoc has been modified to
denote the nature of the input.

Also an auth scheme name is retained as-is, but normalized to lowercase
if comparsion is required.

This closes #193
2020-01-01 22:51:19 +01:00
Gary Gregory 634886ab61 [HTTPCLIENT-2046] Rename AuthSchemes enum to StandardAuthScheme final class
Modeled after StandardCharsets, the new class indicates a non-exhaustive
list of standard auth schemes by name supported by the HttpClient. The
previous enum suffered from two issues:

* it was exhaustive implying that no more auth schemes can be supported
* its sole purpose was to contain an id for the declared auth scheme;
  the enum values theirselves were never used directly

This closes #196
2020-01-01 21:57:53 +01:00
Oleg Kalnichevski 54a341ea92 Simplified MIME multipart generation modes (legacy, strict and extended) 2020-01-01 13:47:53 +01:00
Oleg Kalnichevski 56463de35d MIME code cleanup and class renaming (no functional changes) 2020-01-01 13:47:53 +01:00
Gary Gregory 3fd383f870 [HTTPCLIENT-2044] Don't create stateless/immutable factory objects
Decide later if some of these classes should have a private default
constructor.

This closes #195
2019-12-31 20:43:56 +01:00
Gary Gregory eaa8c5f648
[HTTPCLIENT-2043] Rename classes documented as factories from *Provider to *Factory (#194)
This closes #194
2019-12-31 11:27:16 -05:00
Michael Osipov f71ee38819 [HTTPCLIENT-2041] AuthenticationStrategy#select() assumes challanges key to be lowercase
Properly document that lowercase keys are required.
2019-12-27 12:32:13 +01:00
Michael Osipov 782d8e40a0 Use proper scheme names in text 2019-12-27 12:26:55 +01:00
Michael Osipov 167dbc7576 Make consistent use of AuthSchemes#id
This closes #189
2019-12-27 12:26:34 +01:00
Michael Osipov 2744c73471 Apply consistent id field names
As with HttpCore an entity should have a consistent id field, named 'id'
throughout the entire codebase.

This closes #188
2019-12-26 15:32:22 +01:00
Oleg Kalnichevski a2ebb62881 HTTPCLIENT-2040: Copy headers from the original request to the redirect request 2019-12-25 09:29:11 +01:00
Oleg Kalnichevski 35a63d3426 Removed RFC 2965 specific requirements deprecated and superseded by RFC 6265
Partially reverts commit 379a8351
2019-12-20 10:24:20 +01:00
Michael Osipov 86b1a3b711 Use language-agnotic Locale.ROOT 2019-12-15 16:15:36 +01:00
Michael Osipov 667fc9e218 HTTPCLIENT-2037: AIMDBackoffManager should use TimeValue 2019-12-15 12:21:59 +01:00
Michael Osipov 8be681964c Use paste tense for EntityBuilder#gzipCompressed
Both gzipCompressed and chunked denote a state of an entity where both
should use consistent tenses.
2019-12-15 11:36:32 +01:00
Michael Osipov 6c1e4676a1 Remove unused StringBuilder 2019-12-15 11:36:31 +01:00
Michael Osipov 41a7f5f718 Correct typo in class name 'MultihomeConnectionInitiator'
This class was erronously named 'MultuhomeConnectionInitiator'
2019-12-15 11:36:30 +01:00
Michael Osipov 8adc6c3277 Fix variable name typo 2019-12-15 11:36:29 +01:00
Michael Osipov 830263d279 Use TimeValue#sleep() 2019-12-15 11:28:11 +01:00
Michael Osipov 3d502c9ac4 Correct Javadoc 2019-12-15 11:28:11 +01:00
Michael Osipov 434d5e5046 Fix formatting 2019-12-15 11:28:11 +01:00
Michael Osipov bca9a873a5 Use consistent variable names 2019-12-15 11:28:08 +01:00
Michael Osipov 52c6cf7037 HTTPCLIENT-2035: Remove HttpRequestRetryHandler in favor of HttpRequestRetryStrategy
This closes #183
2019-12-12 08:45:27 +01:00
Michael Osipov e06af3d50b HTTPCLIENT-2019: Remove ServiceUnavailableRetryStrategy in favor of HttpRequestRetryStrategy
This closes #182
2019-12-12 08:35:08 +01:00
Michael Osipov 6cff260eff HTTPCLIENT-2031: Don't use plural names for enums
This closes #180
2019-12-10 10:50:28 +01:00
Michael Osipov 1d56c27e6d HTTPCLIENT-2034: Introduce HttpRequestRetryStrategy 2019-12-10 08:43:14 +01:00
Oleg Kalnichevski 070f30fdc4 Fixed session i/o and wire logging in async clients 2019-12-05 15:30:18 +01:00
Oleg Kalnichevski f3c418c50a CloseableHttpAsyncClient to support explicit HttpHost execution parameter 2019-12-05 10:15:21 +01:00
Oleg Kalnichevski d0541123c2 Fixed typo in method name (no functional changes) 2019-12-05 10:15:21 +01:00
Michael Osipov 742bc47a80
HTTPCLIENT-2020: DefaultBackoffStrategy should include TOO_MANY_REQUESTS (429) too 2019-11-27 13:16:44 +01:00
Niels Basjes 9552d5dd1d HTTPCLIENT-2030: Fix PublicSuffixMatcher::getDomainRoot on invalid hostnames 2019-11-26 11:53:49 +01:00
Peter Frank 72af7cf5a5 HTTPCLIENT-2028: Now allowing 0 for validateAfterInactivity
The purpose of this change is to allow stale checking all the time, in previous versions of HttpClient this was accomplished by staleConnectionCheckEnabled=true which is now removed, this adds that idea back
2019-11-22 22:36:07 +01:00
chao chang 989ad0472d update text in pool stats description
total kept alive -> total available
2019-11-10 15:58:52 +01:00
Oleg Kalnichevski d62616bb29 Upgraded HttpCore dependency to version 5.0-beta10 2019-10-31 15:15:53 +01:00
Oleg Kalnichevski 7d523e9113 Handle TLS session upgrade failures 2019-10-04 14:45:56 +02:00
Ryan Schmitt 90c07f3490 Upgrade httpcore.version to 5.0-beta9 2019-10-04 14:42:38 +02:00
Ryan Schmitt d655994950 Fix fallback PublicSuffixMatcher 2019-10-03 11:01:32 -07:00
Ryan Schmitt 35949e40a9 ClientTlsStrategyBuilder: Set default tlsDetailsFactory 2019-09-27 13:10:24 -07:00
Ryan Schmitt a1adf79100 Enforce h2 TLS rules after negotiating TLS, not before 2019-09-27 13:09:40 -07:00
Gary Gregory 5d21af4849 Remove extra parens. 2019-09-04 20:57:07 -04:00
Oleg Kalnichevski d5e1392840 HTTPCLIENT-2013: revised handling of connect exceptions; improved consistency in behavior of the classic and async clients; ConnectTimeoutException now extends SocketTimeoutException 2019-08-24 23:06:49 +02:00
Oleg Kalnichevski 8f6f6a5357 Improved handling of request cancellation (classic API) 2019-08-24 11:49:24 +02:00
Richard Hernandez 08b35c7f67 Move javadocs to Builder classes 2019-08-23 09:29:39 +02:00
Richard Hernandez c9dc2c9281 Add RequestConfig builder javadocs 2019-08-22 10:06:18 +02:00
Simon Willnauer 1fc46800d8 Execute Socket#connect under doPrivileged
In order to allow users to run under a security manager that only grants
connect permission to the httpcore codebase the connect methods should
be executed in a doPriveledged block.
This is certainly not the only issue that users run into when they
install a SecurityManager with strict permissions but certainly the
most prominent and most likely one. Upstream components like the client
might also need to protect places accessing the proxy selector etc.
2019-08-18 11:34:05 +02:00
itonyli 90e34878a1 HTTPCLIENT-2009: Fxied StringIndexOutOfBoundsException in AuthSupport#extractFromAuthority 2019-08-11 14:57:27 +02:00
Linton Miller 00012c5786 Make Accept-Encoding header handling thread-safe 2019-07-27 23:45:21 +02:00
Oleg Kalnichevski 39cec46715 CloseableHttpClient and CloseableHttpAsyncClient to implement ModalClosable 2019-07-26 14:16:14 +02:00
Oleg Kalnichevski d929456278 Removed deprecated classes 2019-07-26 13:04:21 +02:00
Kirill Usov b717fde289 Information response (1xx) processing 2019-07-14 16:11:16 +02:00
Oleg Kalnichevski 669020ccac Renamed Http2 to H2 (no functional changes) 2019-07-14 15:50:44 +02:00
Oleg Kalnichevski 8e42474a6c Deprecated HttpClient functionality now provided out of HttpCore 2019-07-14 15:48:21 +02:00
Oleg Kalnichevski b535a2812b Upgraded HttpCore to version 5.0-beta8 2019-07-14 15:48:21 +02:00
Oleg Kalnichevski a0aa438be8 Logging of multihome connect operations 2019-06-27 20:16:46 +02:00
jeromedemangel 19a87e0c77 HTTPCLIENT-1997: Return the last domain segment instead of normalized domain name from PublicSuffixMatcher#getDomainRoot in case there is no match 2019-06-27 17:26:30 +02:00
Neonailol 9e6287c88b Fix typo in interceptor methods names
Signed-off-by: Neonailol <neonailol@gmail.com>
2019-06-26 12:14:48 +02:00
Oleg Kalnichevski 8603a61b55 HTTPCLIENT-1968: Preserve escaped PATHSAFE characters when normalizing URI path segments 2019-06-21 17:43:41 +02:00
Oleg Kalnichevski 07a9714f3b Better event correlation in connection management logging 2019-06-18 15:03:06 +02:00
Oleg Kalnichevski fdff6b6c0f Misspelled main method name 2019-06-18 15:03:06 +02:00
Serkan Turgut 2267ef26b9 HTTPCLIENT-1992: Impossible to access trailer-headers available in chunked transfer-encoding
1. Implementing getTrailers() in ResponseEntityProxy which will return a
Supplier which propagates the output of ChunkedInputStream.getFooters(),
otherwise it returns a empty list.
2. Fixing a typo in ResponseEntityProxy.enhance() method name.
2019-06-14 11:38:53 +02:00
Oleg Kalnichevski 1afa421f6f HTTPCLIENT-1991: incorrect handling of non-standard DNS entries by PublicSuffixMatcher 2019-06-05 11:07:04 +02:00
Adam Retter d71d0f5a4c Refactor to enable support for non-form based multipart requests 2019-06-03 15:30:02 +02:00
dowy 91f9278b9a Escape DEL character when tracing
DEL characters should be converted to [0x7f] in Wire traces otherwise they are difficult to see in logs.
2019-05-30 11:47:40 +02:00
Jay Modi 7fbbe7c98f HTTPCLIENT-1981: disallow TRACE requests with an enclosed entity 2019-04-11 12:17:14 +02:00
Oleg Kalnichevski c44a10df75 [HTTPCORE-572] Move examples to the src/test folders for each module 2019-04-02 14:55:24 +02:00
Oleg Kalnichevski 07bd2e26fc Changed route tracking of proxy to not default to false 2019-03-18 09:28:31 +01:00
Artem Smotrakov a2a55f82e5 HTTPCLIENT-1969: Filter out weak cipher suites 2019-03-07 12:20:13 +01:00
Oleg Kalnichevski 285674e4ff HttpClient should retry requests in case of ConnectionClosedException 2019-03-07 09:19:08 +01:00
Oleg Kalnichevski d950fa6ed0 Bug fix: Simple response consumer to discard stored content when releasing resources 2019-03-07 09:19:08 +01:00
Oleg Kalnichevski 39023dfed1 Bug fix: main async request execution handlers to release teh associated response consumer upon exception 2019-03-07 09:19:08 +01:00
Oleg Kalnichevski 74ae768e0d Fixed examples broken by HttpCore upgrade 2019-03-07 09:19:08 +01:00
Ryan Schmitt f8653a011a Upgrade HttpCore to version 5.0-beta7 2019-02-27 14:36:53 -08:00
Gary Gregory 1f06087fad Use final. 2019-01-31 21:11:28 -05:00
Oleg Kalnichevski 123bd993cf HTTPCLIENT-1960: URIBuilder incorrect handling of multiple leading slashes in path component 2019-01-14 09:36:14 +01:00
Oleg Kalnichevski 7824d98d0c HTTPCLIENT-1958: PoolingHttpClientConnectionManager to throw ExecutionException in case of a lease operation cancellation instead of InterruptedException
(fixed previous commit)
2019-01-10 13:37:24 +01:00
Oleg Kalnichevski 50e7dd51e0 HTTPCLIENT-1958: PoolingHttpClientConnectionManager to throw ExecutionException in case of a lease operation cancellation instead of InterruptedException 2019-01-10 10:20:59 +01:00
吴雪山 df415c4f24 Shutdown executorService on AbstractHttpAsyncClientBase shutdown 2019-01-08 13:52:28 +08:00
Michael Osipov 812f18b453 [HTTPCLIENT-1957] Remove use of Proxy-Connection header
This closes #132
2019-01-02 17:19:42 +01:00
Michael Osipov 354ae3586e [HTTPCLIENT-1952] Allow default User Agent to be disabled
This closes #128
2018-12-23 23:56:07 +01:00
Michael Osipov 4450221be7 Improve HttpResponseException#getMessage()
The #getMessage() now properly consists of the status code as such and the
optional reason phrase. Moreover, the pure reason phrase can be retrieved
via #getReasonPhrase.
2018-12-23 21:18:13 +01:00
Alex Panchenko 6275a39c00 replace empty HttpResponseException.message with statusCode
(cherry picked from commit 20dfff12c4)
2018-12-19 17:37:11 +02:00
Oleg Kalnichevski 6b410fe0e7
Merge pull request #124 from eryksz/fixSelfAssigment
Fixed incorrect method parameter name in PoolingAsyncClientConnectionManagerBuilder
2018-12-16 18:20:27 +01:00
Jens Borgland eac6c062b5 Better handling of http(s).proxyUser and http(s).proxyPassword 2018-12-16 18:14:07 +01:00
Eryk Szymanski 0c2b8e8a49 Fix PoolingAsyncClientConnectionManagerBuilder
Wrong argument name in setConnPoolPolicy results with self assignment of variable
2018-12-14 16:16:02 +01:00
Oleg Kalnichevski 836e953da0 Added optional dependency on conscrypt-openjdk-uber 1.4.1; support for advanced TLS functions (such as ALPN extension) on Java 1.7 and Java 1.8 through Conscrypt TLS library 2018-12-10 13:18:41 +01:00
Oleg Kalnichevski b452006756 Upgraded HttpCore to version 5.0-beta6 2018-12-04 15:49:56 +01:00
Ryan Schmitt 4ee9d3107f Revert "Use connectTimeout as TLS handshake timeout"
This reverts commit d3e34f70c4. Although
this commit did fix TLS handshake timeouts, it then broke response
timeouts by causing the connectTimeout to also be used as a
socketTimeout (even after the TLS connection is established.)
2018-11-30 15:02:23 -08:00
Oleg Kalnichevski 03de3ab16c Removed experimental CredSsp auth scheme 2018-11-16 10:26:16 +01:00
Ryan Schmitt d3e34f70c4 Use connectTimeout as TLS handshake timeout 2018-11-13 13:47:18 -08:00
Oleg Kalnichevski de59e984c7 Code simplification; removed dependency on classic API specific classes 2018-11-08 10:55:42 +01:00
Oleg Kalnichevski 3c25ca7266 HTTPCLIENT-1949: DigestScheme to use HttpRequest#getRequestUri instead of HttpRequest#getPath 2018-10-30 13:06:30 +01:00
Oleg Kalnichevski 65802bc8d3 Added reference to JDK-8212885 2018-10-29 11:18:32 +01:00
Oleg Kalnichevski d799a588ef Hack to make hostname verification work with TLSv1.3 resumed sessions 2018-10-23 09:28:40 +02:00
Oleg Kalnichevski 75ca519314 Added #responseTimeout to RequestConfig 2018-10-22 15:52:03 +02:00
Oleg Kalnichevski b74cb12d44 Renamed RequestConfig#connectionTimeout to RequestConfig#connectTimeout 2018-10-22 15:14:04 +02:00
Ryan Schmitt e92c75be8a HTTPCLIENT-1942: Add example of full-duplex reactive message exchange 2018-10-22 11:45:02 +02:00
Oleg Kalnichevski 64470a970d Use Timeout instead of long / TimeUnit 2018-10-22 11:37:14 +02:00
Oleg Kalnichevski 160bac0cbb Fixed inconsistencies in usage of RequestConfig#connectionTimeout and Request#connectionRequestTimeout 2018-10-22 10:44:00 +02:00
Oleg Kalnichevski f4bb8fec5b Tweaked expected exception check in FutureRequestExecutionService test 2018-10-21 19:32:13 +02:00
Oleg Kalnichevski 8150e37cc3 Do not enforce HTTP/2 TLS requirements in case of FORCE_HTTP_1 protocol version policy 2018-10-21 19:11:27 +02:00
Oleg Kalnichevski 309afeff07 Added builders for SSLConnectionSocketFactory and client TlsStrategy 2018-10-21 16:52:40 +02:00
Oleg Kalnichevski 1eab98760b Added enum for supported TLS versions & TLS version parser 2018-10-21 16:52:40 +02:00
Oleg Kalnichevski e72d745ecd Extracted hostname verification code into a separate support class 2018-10-21 16:52:40 +02:00
Oleg Kalnichevski 2b6f7e53d0 HTTPCLIENT-1946: handling of 308 status as per RFC 7538 2018-10-21 13:40:46 +02:00
Oleg Kalnichevski 8ebb629563 Javadoc cleanup 2018-10-21 13:34:45 +02:00
Oleg Kalnichevski ab7be3fd53 Upgraded HttpCore to version 5.0-beta5 2018-10-21 13:24:49 +02:00
Oleg Kalnichevski 37c8006472 Javadocs; renamed some methods (no functional changes) 2018-10-17 23:40:12 +02:00
Oleg Kalnichevski c446639820 AsyncConnectionEndpoint to support graceful and immediate close modes 2018-10-17 14:31:12 +02:00
Oleg Kalnichevski a1d6db5ec3 Simplified ManagedAsyncClientConnection interface 2018-10-17 13:16:29 +02:00
Oleg Kalnichevski 447e276fb6 HttpAuthenticator to re-use the logger of its parent 2018-10-16 16:18:25 +02:00
Oleg Kalnichevski ac90342039 Use enums for supported cookie policies and auth schemes 2018-10-14 20:05:17 +02:00
Oleg Kalnichevski 9e8ab71517 Use HttpUriRequest interface for a better compatibility with HttpClient 4.x 2018-10-14 17:59:10 +02:00
Oleg Kalnichevski 49cdb631f5 Made classic and async execution runtime APIs more consistent 2018-10-14 16:52:21 +02:00
Oleg Kalnichevski 49487b4fe5 Moved class to another package (no functional changes) 2018-10-14 15:11:16 +02:00
Oleg Kalnichevski 678cc1bcb8 Updated BASIC and DIGET preemptive authentication examples 2018-10-05 17:41:25 +02:00
Oleg Kalnichevski 0fb2060fcb DigestScheme to expose last nonce and nonce count values 2018-10-05 17:41:25 +02:00
Gary Gregory 8e486b356e Reuse our UriScheme enum instead of magic strings. 2018-10-03 09:25:17 -06:00
Gary Gregory d711bd637e Add org.apache.hc.client5.http.config.RequestConfig.toString() and
camcel-case an ivar.
2018-09-21 18:04:38 -06:00
Oleg Kalnichevski 9eb00018ce Async clients to support request specific push consumers 2018-09-20 17:16:06 +02:00
Johnny Lim 6fec5136dd Fix typo 2018-09-04 11:13:52 +02:00
Ryan Schmitt b2f09ae0eb Enable hard cancellation by default
This change makes request cancellation behavior more consistent across
different client types (blocking, non-blocking HTTP/1.1, and HTTP/2).
2018-08-31 13:24:38 -07:00
Ryan Schmitt ec99279712 HTTPCLIENT-1944: Add hardCancellationEnabled option to RequestConfig 2018-08-30 18:24:30 -07:00
Oleg Kalnichevski cbe00beb56 Removed duplicate class (no functional changes) 2018-08-30 11:36:46 +02:00
Oleg Kalnichevski 1614c25168 Upgraded HttpCore dependency to version 5.0-beta3 2018-08-30 10:54:54 +02:00
Gary Gregory 3aa9c1fd33 - Always use blocks
- Add missing serial version ID (default 1L)
- Camel-case names.
- Don't nest in else clause unnecessarily.
- Remove declared exceptions that are not thrown (but don't break BC.)
- Remove redundant superinterface
- Access static methods directly
- Better local var names.
2018-08-14 20:56:08 +02:00
Mark Mielke d4be433a76 Fix HttpClient 4.5.4 regression in BasicCookieStore serialization.
HttpClient 4.5.4 modified BasicCookieStore to introduce a new
ReadWriteLock field to improve performance. Unfortunately this
also changed the serialized data structure, and any objects
serialized using HttpClient 4.5.3 and before would be unusable
after restore in HttpClient 4.5.4 due to the new "lock" field
being null.

The fix is to change "lock" to be transient, and ensure it is
correctly instantiated upon object restore. This restores
compatibility with HttpClient 4.5.3, as well as maintaining
compatible with the intermediate versions containing the
regression. This also avoids unnecessary serialization of
the new "lock" field, which does not need to be persisted.
2018-08-08 16:43:45 +02:00
Gary Gregory 769e9fab3f Add missing @Override annotations. 2018-08-05 11:40:07 -06:00
Gary Gregory c3bdc8913f Refactor common code in a new Closer utility class. 2018-08-04 23:55:41 +02:00
Gary Gregory 8d87cf515b Static methods should be accessed directly. Remove redundant type
arguments. Remove exceptions not thrown from method signatures. Add
missing @Override. Remove unnecessary semicolons. Don't nest
unnecessarily.
2018-08-04 10:40:01 -06:00
Oleg Kalnichevski 50802106f6 HTTPCLIENT-1934: H2 TLS strategy passes wrong hostname to the hostname verifier 2018-07-17 11:27:20 +02:00
Oleg Kalnichevski b97c7a08b2 HTTPCLIENT-1933: fixed incorrect method names 2018-07-15 12:28:40 +02:00
Oleg Kalnichevski fa4a4d3bd6 HTTPCLIENT-1931, HTTPCLIENT-1932: Changed ClassicHttpRequests factory methods to return HttpUriRequestBase; added SimpleHttpRequests factory enum 2018-07-14 12:44:59 +02:00
Gary Gregory 92ee24efb8 Javadoc. 2018-07-14 11:29:32 +02:00
Gary Gregory db417d80ba - [HTTPCLIENT-1931] Add factory enum
org.apache.hc.client5.http.classic.methods.ClassicHttpRequests
- [HTTPCLIENT-1932] Add factory enum
org.apache.hc.client5.http.aysnc.methods.HttpRequests
2018-07-13 20:18:33 +02:00
Gary Gregory 7875ab19df Use "String.isEmpty()" instead of "String.length() == 0" 2018-07-12 09:06:57 -06:00
xiaohu-zhang 0c0e9c7b7c HTTPCLIENT-1928: FutureCallback implementation that catches and logs exceptions thrown in #completed method 2018-07-11 17:20:46 +02:00
Oleg Kalnichevski fd952c8654 HTTPCLIENT-1882: reset authentication state on I/O or runtime error for connection based authentication schemes (such as NTLM) 2018-07-04 17:17:38 +02:00
Oleg Kalnichevski ec22a46866 HTTPCLIENT-1924: HttpClient to shut down the connection manager if a fatal error occurs in the course of a request execution 2018-06-17 10:35:28 +02:00
Oleg Kalnichevski 6570228118 Pooling connection managers to implement graceful and immediate shut down 2018-06-16 11:39:24 +02:00
Oleg Kalnichevski 60571ae8fa Fixed inconsistent method name 2018-05-17 16:39:51 +02:00
Oleg Kalnichevski a6a29892fa HTTPCORE-524: updated examples to use nghttp2.org instead of no longer functional http2bin.org 2018-05-10 15:58:49 +02:00
Oleg Kalnichevski e3cdb72de7 Added examples of full-duplex HTTP/1.1 and HTTP/2 message exchanges 2018-03-15 11:54:11 +01:00
Oleg Kalnichevski feb6a5fbdc Simplified signature of #execute methods that take AsyncClientExchangeHandler as a parameter 2018-03-15 11:53:31 +01:00
Oleg Kalnichevski 70ee2d4912 Minimal HttpAsyncClient to resolve default protocol scheme port when leasing endpoints 2018-03-13 21:21:42 +01:00
Oleg Kalnichevski 56cc24525e HTTPCLIENT-1906: certificates containing alternative subject names other than DNS and IP (such as RFC822) get rejected as invalid 2018-02-26 15:10:57 +01:00
Hans-Peter Keck a2cc0a511b HTTPCLIENT-1904: check cookie domain for null 2018-02-09 11:57:11 +01:00
Oleg Kalnichevski 4f7df3d0a2 HTTPCLIENT-1900: proxy protocol processor in the CONNECT exec interceptor does not post-process CONNECT response messages 2018-01-27 10:24:40 +01:00
Gary Gregory ceec7eeaa6 [HTTPCLIENT-1898] Incorrect comment in example class
ClientMultiThreadedExecution.java
2018-01-23 21:01:06 -07:00
Oleg Kalnichevski 1e5fe0e01c DefaultHostnameVerifier to use a custom distinguished name (DN) parser instead of LdapName; removed dependency on Java Naming extensions 2018-01-12 18:47:56 +01:00
Oleg Kalnichevski 10126c70ff HTTP/2 client implementations to support cancellation of ongoing message exchanges without terminating the underlying connections 2018-01-12 14:40:32 +01:00
Oleg Kalnichevski 695f353b43 Re-use concurrent primitives from HttpCore 2018-01-12 14:20:10 +01:00
Oleg Kalnichevski dee32207e3 Upgraded HttpCore dependency to version 5.0-beta2 2018-01-12 14:06:08 +01:00
Sudheera Palihakkara a7a70e8cd4 HTTPCLIENT-1895: added test case for multi-member GZIP content streams (per RFC 1952) 2018-01-11 14:29:12 +01:00
Oleg Kalnichevski eb71f45ee5 SLF4J logging facade 2018-01-10 13:07:37 +01:00
Oleg Kalnichevski 16147b1852 Completed rewrite of re-validation code in the classic caching exec interceptor; added re-validation to the async caching exec interceptor 2018-01-08 11:13:17 +01:00
Oleg Kalnichevski 1c73280983 Support for execution forks (concurrent request execution) by request execution interceptors 2018-01-04 11:21:01 +01:00
Oleg Kalnichevski 26bb4b6b9c Renamed ExecRuntimeImpl to InternalExecRuntime (no functional changes) 2018-01-04 10:37:00 +01:00
Oleg Kalnichevski 47a0eb8b65 HTTPCLIENT-1893: Moved HttpContext state logic out of DefaultRedirectStrategy to the redirect execution interceptors; redesigned RedirectLocations class; refactored classic redirect execution interceptor unit tests 2018-01-03 19:37:19 +01:00
Oleg Kalnichevski b45b72ef77 Added HTTP routing support class; simplified HttpRoutePlanner API 2018-01-03 19:37:12 +01:00
Oleg Kalnichevski db4b6db79f Moved ByteArrayBuilder class (no functional changes) 2018-01-03 14:36:20 +01:00
Oleg Kalnichevski 6459d6882c Added Date util methods for common operations 2017-12-26 17:18:20 +01:00
Oleg Kalnichevski 1e4e204162 Request execution futures to cancel dependent operations when cancelled by the caller 2017-12-23 11:21:55 +01:00
Oleg Kalnichevski e262842466 Added Cancellable convenience methods 2017-12-23 10:48:46 +01:00
Gary Gregory 9931a9ca94 Replace use of String.indexOf(String) for strings of length one with
indexOf(char)
2017-12-06 09:29:06 -07:00
Oleg Kalnichevski cca56bebe9 AuthScope cleanup 2017-12-05 15:16:05 +01:00
Oleg Kalnichevski 4a55a8cfbd HTTPCLIENT-1885: Content compression exec interceptor generates incorrect 'Accept-Encoding' header value 2017-11-28 10:22:56 +01:00
Oleg Kalnichevski 2b2dd593a3 HTTPCLIENT-1883: SystemDefaultCredentialsProvider to use https.proxy* system properties for origins with port 443 2017-11-26 17:09:59 +01:00
Oleg Kalnichevski 2584dbd311 HTTPCLIENT-1883: Added https.proxy* to the list of system properties taken into account by HttpClientBuilder and HttpAsyncClientBuilder 2017-11-26 16:37:29 +01:00
Oleg Kalnichevski 8f8efa9d6e CredSspScheme to require a valid SSLContext 2017-11-24 22:44:44 +01:00
Oleg Kalnichevski 0c6aaee0b6 Marked CREDSSP auth scheme experimental 2017-11-24 22:40:45 +01:00
Oleg Kalnichevski 701377e926 Eliminated DebugUtil class 2017-11-24 22:39:33 +01:00
Karl Wright 42359353a2 HTTPCLIENT-1881: Allow truncated NTLM packets to work with this client. 2017-11-18 06:37:27 -05:00
Oleg Kalnichevski 235348eec6 Replaced socket and connect timeout request parameters with a single connection timeout request parameter. HTTP requests may be executed concurrently over a single HTTP/2 connection and no longer should overwrite connection socket timeout 2017-11-18 11:24:17 +01:00
Oleg Kalnichevski 47dfbfa221 Moved route local address configuration from RequestConfig to DefaultRoutePlanner 2017-11-17 18:23:53 +01:00
Oleg Kalnichevski f182b73e48 Added methods to passivate and activate managed connections. These methods are used to restore / store the original socket timeout value upon connection lease / release 2017-11-17 17:49:14 +01:00
Oleg Kalnichevski e3cd57a570 Fixed ALPN handshake failure in HTTP/2 integration tests 2017-11-14 19:27:25 +01:00
Oleg Kalnichevski 6228a73613 * HTTP/2 multiplexing HttpAsyncClient implementation
* Restructured integration tests to reduce test duplication
2017-11-13 22:30:12 +01:00
Oleg Kalnichevski 703b7968c5 Treat System#getProperty as a privileged action 2017-11-13 10:46:09 +01:00
Oleg Kalnichevski 3db1228242 Improved minimal HttpAsyncClient implementation; added minimal HTTP/2 multiplexing HttpAsyncClient implementation 2017-11-12 16:20:58 +01:00
Oleg Kalnichevski 79c153409b Async exec runtime and connection management improvements 2017-11-12 16:20:58 +01:00
Oleg Kalnichevski d992bec7ad Fixed handling of task cancelation 2017-11-12 16:20:27 +01:00
Oleg Kalnichevski 1577356f37 Fixed handling of request configuration by async clients 2017-11-09 11:26:51 +01:00
Oleg Kalnichevski 7c0a1127be Multi-home DNS aware implementation of ConnectionInitiator; ConnectTimeoutException and HttpHostConnectException to use NamedEndpoint instead of HttpHost 2017-11-08 15:01:18 +01:00
Oleg Kalnichevski 2ad0370517 Revised handling of non-repeatable requests 2017-11-07 09:42:07 +01:00
Oleg Kalnichevski 45f1a2a740 Improved internal client exchange handling code 2017-11-05 13:57:34 +01:00
Oleg Kalnichevski 389272de3a Upgraded HttpCore dependency to version 5.0-beta1 2017-11-05 13:57:34 +01:00
Oleg Kalnichevski d88e32f952 Annotation for cacheable auth schemes 2017-11-04 11:10:22 +01:00
Oleg Kalnichevski 87865c5cd5 Fixed style check violations (no functional changes) 2017-11-01 22:30:52 +01:00
Oleg Kalnichevski a403075948 HTTPCLIENT-1873: Config option for Kerberos delegation 2017-10-23 11:36:14 +02:00
Oleg Kalnichevski d054442cdf Compatibility with Java 9 (tested with Oracle JDK 9.0.1); updated SSL/TLS examples 2017-10-22 17:15:50 +02:00
Oleg Kalnichevski 572a370f4b Added #toString() 2017-10-22 17:13:55 +02:00
Oleg Kalnichevski 09aee8c422 Removed #finalize() methods deprecated in Java 9 2017-10-22 14:33:01 +02:00
Oleg Kalnichevski 9368c5f5c8 HTTPCLIENT-1855: disabled caching of DIGEST auth scheme instances due to unreliability of nonce counter when the auth cache is shared by multiple sessions 2017-10-20 12:04:26 +02:00
Oleg Kalnichevski 45f1657907 HTTPCLIENT-1827: Builder for CachingHttpAsyncClient instances with full support for streamed HTTP exchanges 2017-10-16 22:59:26 +02:00
Oleg Kalnichevski 20f4290d01 Removed dependency on classic (blocking) I/O APIs from HttpCache 2017-10-02 17:34:40 +02:00
Oleg Kalnichevski e2a464084c Removed deprecated code 2017-10-01 11:42:51 +02:00
Oleg Kalnichevski f959d44ec7 Deprecated Content-Transfer-Encoding field in MIME body parts per RFC 7578, section 4.7 2017-09-30 23:51:52 +02:00
Ioannis Sermetziadis a424709d89 HTTPCLIENT-293 Implemented the percent encoding of the filename parameter of the Content-Disposition header based on RFC7578 sections 2 and 4.2. In the new MultipartForm implementation I included a PercentCodec that performs encoding/decoding to/from the percent encoding as described in RFC7578 and RFC3986. 2017-09-30 23:51:43 +02:00
Ioannis Sermetziadis 9560aef476 HTTPCLIENT-293 Refactored code in order to support multipart header field parameters in the data model and postpone the formatting and encoding of the parameters until the moment written into a stream, which is essential in order to avoid multiple encodings of the same value. 2017-09-30 23:51:22 +02:00
Oleg Kalnichevski 9ac5808bdb Added MessageCopier and implementations for HttpRequest and ClassicHttpRequest messages; removed message copy methods from ExecSupport 2017-09-30 23:00:45 +02:00
Oleg Kalnichevski e8972624ac Redesign of SimpleHttpRequest / SimpleHttpResponse APIs 2017-09-29 17:02:41 +02:00
Andy Klimczak 26a253fcb4 Fix typo in HttpClients.java Javadoc closes #83. 2017-09-06 14:55:34 -06:00
Oleg Kalnichevski d2b3385ba2 Redesign of classic and asynchronous connection manager APIs 2017-09-06 17:44:36 +02:00
Oleg Kalnichevski 6d17126cbf Moved classes and renamed packages (no functional changes) 2017-09-02 17:27:30 +02:00
Oleg Kalnichevski dcc09e92e0 Logging improvements 2017-09-01 20:30:10 +02:00
Oleg Kalnichevski b58e7d46d7 Upgraded HttpCore to version 5.0-alpha4 2017-09-01 20:29:58 +02:00
Carter Kozak 272ea1fa83 Fixed NPE PoolingAsyncClientConnectionManager
PoolingAsyncClientConnectionManager.validateAfterInactivity causes
an NPE when PoolEntries are initially created with no Connection.

Added logic to avoid checking the connection on every pool
checkout similar to the blocking pool.

Added an connection.isOpen check to http1.x connections leased
from the pool, although I'm unsure if it's at all effective.

Closes PR #82
2017-08-09 20:28:18 +02:00
Carter Kozak a10967a427 BasicCookieStore no longer synchronizes on reads
BasicCookieStore uses a ReentrantReadWriteLock to avoid
synchronization on getCookies/toString while maintaining
thread safety.

Closes PR #81
2017-08-08 23:07:52 +02:00
Tomas Celaya 9efcba8730 [HTTPCLIENT-1865] DefaultServiceUnavailableRetryStrategy does not
respect HttpEntity#isRepeatable.
2017-08-01 19:25:17 +02:00
Gary Gregory f2146cab62 [HTTPCLIENT-1858] Clone some code from Log4j 2 to cache a StringBuilder
in a ThreadLocal. Update to use the StringBuilder's capacity instead of
its length to measure upper bound.
2017-08-01 19:12:15 +02:00
Jay Modi fe6b90a8c6 [HTTPASYNC-124] Add doPrivileged blocks to async client and connection
manager builders.
2017-08-01 19:12:02 +02:00
Oleg Kalnichevski 643ea6c3e0 Fixed javadocs 2017-07-16 23:01:36 +02:00
Gary Gregory 527dce78a7 [HTTPCLIENT-1858] Clone some code from Log4j 2 to cache a StringBuilder in a ThreadLocal. 2017-07-16 22:42:16 +02:00
Karl Wright 55fe0fb139 HTTPCLIENT-1859: Encode header name, filename appropriately 2017-06-22 09:51:27 -04:00
Oleg Kalnichevski 1cba813bf8 CredSSP scheme to throw SSLInitializationException in case of SSL context initialization failure instead of untyped RuntimeException 2017-05-29 20:21:57 +02:00
Oleg Kalnichevski a034a34db2 Line ending normalization 2017-05-29 20:08:10 +02:00
Oleg Kalnichevski 4f4576ec94 Use SSLInitializationException from HttpCore 2017-05-29 19:21:04 +02:00
Pavol Loffay 4bd79fb3dd Allow to add exec interceptor as the first and the last
Closes PR #76
2017-05-18 09:27:58 +02:00
Gary D. Gregory ace93bbbed No need for two (2) license headers.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794478 13f79535-47bb-0310-9956-ffa450edef68
2017-05-08 22:55:38 +00:00
Gary D. Gregory 9050d81207 Javadoc: Close tag.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794414 13f79535-47bb-0310-9956-ffa450edef68
2017-05-08 17:11:27 +00:00
Gary D. Gregory 07c74cd8b1 Better parameter name.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794412 13f79535-47bb-0310-9956-ffa450edef68
2017-05-08 16:51:27 +00:00
Gary D. Gregory 4fa296bbfd Sort imports.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794411 13f79535-47bb-0310-9956-ffa450edef68
2017-05-08 16:51:12 +00:00
Gary D. Gregory 07aea2cbb9 [HTTPCLIENT-1845]: Extract InputStreamFactory classes out of GzipDecompressingEntity and DeflateDecompressingEntity for reuse and to create less garbage.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794410 13f79535-47bb-0310-9956-ffa450edef68
2017-05-08 16:50:54 +00:00
Oleg Kalnichevski c5257a771d Javadoc fix
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794203 13f79535-47bb-0310-9956-ffa450edef68
2017-05-07 13:36:35 +00:00
Oleg Kalnichevski c7a52d51c0 Disable HTTP tunneling support until the problem with delineation of 200 status message in response to CONNECT method has been resolved in HttpCore
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794172 13f79535-47bb-0310-9956-ffa450edef68
2017-05-06 18:30:44 +00:00
Oleg Kalnichevski 922a9ac545 Fixed processing of HTTP protocol version dependent request headers
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794171 13f79535-47bb-0310-9956-ffa450edef68
2017-05-06 18:30:37 +00:00
Oleg Kalnichevski 5ae1cff8a2 Implemented connection routing for the async request exec chain
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794170 13f79535-47bb-0310-9956-ffa450edef68
2017-05-06 18:30:25 +00:00
Oleg Kalnichevski ecf4e93842 Classic exec runtime to establish connection automatically if the connection endpoint is disconnected
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1794169 13f79535-47bb-0310-9956-ffa450edef68
2017-05-06 18:30:02 +00:00
Oleg Kalnichevski 196ee3363e HTTPCLIENT-1826: HttpAsyncClientBuilder to accept ThreadFactory attribute
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793762 13f79535-47bb-0310-9956-ffa450edef68
2017-05-04 09:42:53 +00:00
Oleg Kalnichevski 28058b8f85 Upgraded Mockito dependency to version 2.7
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793693 13f79535-47bb-0310-9956-ffa450edef68
2017-05-03 18:31:58 +00:00
Oleg Kalnichevski e8efaea53f Removed remaining JCL usage in the caching module. Cleaned up POM.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793690 13f79535-47bb-0310-9956-ffa450edef68
2017-05-03 18:31:30 +00:00
Oleg Kalnichevski d5039137ca Improved protocol handling in the async request execution chain; implemented cookie processing and authentication handling
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793567 13f79535-47bb-0310-9956-ffa450edef68
2017-05-02 18:22:59 +00:00
Oleg Kalnichevski d43ee7177b Refactored connection routing and protocol execution code in the classic exec chain
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793325 13f79535-47bb-0310-9956-ffa450edef68
2017-05-01 13:06:48 +00:00
Oleg Kalnichevski bde89fee57 Fixed automatic content compression in classic exec chain
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793324 13f79535-47bb-0310-9956-ffa450edef68
2017-05-01 13:04:26 +00:00
Oleg Kalnichevski b0cdc58b01 Initial implementation of the async request execution chain
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793320 13f79535-47bb-0310-9956-ffa450edef68
2017-05-01 12:39:16 +00:00
Oleg Kalnichevski da5797f470 Moved classic HttpClient and HC fluent integration tests to httpclient-testing module
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793319 13f79535-47bb-0310-9956-ffa450edef68
2017-05-01 12:38:41 +00:00
Oleg Kalnichevski 25c6afed7c Initial redesign of the classic request execution chain
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793308 13f79535-47bb-0310-9956-ffa450edef68
2017-05-01 11:11:09 +00:00
Oleg Kalnichevski 04594b97a9 Upgraded HttpCore to version 5.0-alpha3; fixed HttpCore API usage
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1793305 13f79535-47bb-0310-9956-ffa450edef68
2017-05-01 10:47:09 +00:00
Gary D. Gregory e1c5e5922a [HTTPCLIENT-1836] DefaultHostnameVerifier#getSubjectAltNames(X509Certificate) throws java.lang.ClassCastException.
Contributed by Gary Gregory <ggregory at apache.org>, Ilian Iliev <ilian_iliev at yahoo.com>


git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1789189 13f79535-47bb-0310-9956-ffa450edef68
2017-03-28 18:53:43 +00:00
Gary D. Gregory ab46a44871 Format tweak.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1789172 13f79535-47bb-0310-9956-ffa450edef68
2017-03-28 15:58:28 +00:00
Gary D. Gregory 192acfde4d Statement unnecessarily nested within else clause.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1789170 13f79535-47bb-0310-9956-ffa450edef68
2017-03-28 15:54:38 +00:00
Gary D. Gregory b1f8cd58f6 Use final.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1788709 13f79535-47bb-0310-9956-ffa450edef68
2017-03-26 02:43:03 +00:00
Gary D. Gregory 857bcfb04d Add missing '@Override' annotations.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1788708 13f79535-47bb-0310-9956-ffa450edef68
2017-03-26 02:35:13 +00:00
Oleg Kalnichevski 0aff0348ad HTTPCLIENT-1835: evictExpiredConnections no longer causes the evictIdleConnections behaviour to be enabled when evictIdleConnections is not explicitly enabled
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1788069 13f79535-47bb-0310-9956-ffa450edef68
2017-03-22 09:03:54 +00:00
Oleg Kalnichevski f8eb3bf235 HTTPCLIENT-1830: await termination of the IdleConnectionEvictor when it is shut down
Contributed by Liam Williams <liam.williams at zoho.com>

git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1787982 13f79535-47bb-0310-9956-ffa450edef68
2017-03-21 14:47:51 +00:00
Oleg Kalnichevski db97c706d4 HTTPCLIENT-1832: Added content length parameter to InputStreamBody constructor
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1787772 13f79535-47bb-0310-9956-ffa450edef68
2017-03-20 13:48:18 +00:00
Karl Wright d07ee6fbc7 HTTPCLIENT-1834: Fix up the conflicts with patch HTTPCLIENT-1662.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1787727 13f79535-47bb-0310-9956-ffa450edef68
2017-03-20 11:58:46 +00:00
Oleg Kalnichevski 248cf5c96d HTTPCLIENT-1834: NTLN auth refactoring; support for MS CredSsp auth
Contributed by Radovan Semancik <radovan.semancik at evolveum.com> and Karl Wright <kwright at apache.org>

git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1787707 13f79535-47bb-0310-9956-ffa450edef68
2017-03-20 10:11:56 +00:00
Oleg Kalnichevski e6844f5d33 Fix for HTTPCLIENT-1833
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1787549 13f79535-47bb-0310-9956-ffa450edef68
2017-03-18 12:07:13 +00:00
Oleg Kalnichevski 8a54c1b8f7 AuthChallenge to include challenge type (target or proxy)
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1787548 13f79535-47bb-0310-9956-ffa450edef68
2017-03-18 12:06:32 +00:00
Oleg Kalnichevski 26cfea101f Client side APIs for HTTP/2 server push handling
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1784909 13f79535-47bb-0310-9956-ffa450edef68
2017-03-01 10:47:22 +00:00
Oleg Kalnichevski 191183bf75 Moved sync HTTP method classes
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1784141 13f79535-47bb-0310-9956-ffa450edef68
2017-02-23 14:35:01 +00:00
Oleg Kalnichevski d1c104a89e New non-blocking HttpAsyncClient APIs
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1784140 13f79535-47bb-0310-9956-ffa450edef68
2017-02-23 14:33:47 +00:00
Oleg Kalnichevski 113d40ef39 New non-blocking connection management APIs
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1784139 13f79535-47bb-0310-9956-ffa450edef68
2017-02-23 14:32:43 +00:00
Oleg Kalnichevski 564537aebc Redesign of classic (blocking) connection management APIs
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1784138 13f79535-47bb-0310-9956-ffa450edef68
2017-02-23 14:32:24 +00:00
Gary D. Gregory 7637761238 Checkstyle fixes.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1784071 13f79535-47bb-0310-9956-ffa450edef68
2017-02-22 22:37:39 +00:00
Gary D. Gregory fcbfd1d914 Tab police and use // @formatter:[off|on]
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1783963 13f79535-47bb-0310-9956-ffa450edef68
2017-02-22 01:29:28 +00:00
Gary D. Gregory f77bdff541 Tab police.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1783844 13f79535-47bb-0310-9956-ffa450edef68
2017-02-21 08:45:54 +00:00
Gary D. Gregory a9df4780c1 Use try-with-resources to try and avoid any leaks.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1783811 13f79535-47bb-0310-9956-ffa450edef68
2017-02-20 22:56:52 +00:00
Gary D. Gregory 97f1e35a00 [HTTPCLIENT-1817] Add a "Trust All" TrustStrategy implementation.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1783809 13f79535-47bb-0310-9956-ffa450edef68
2017-02-20 22:50:39 +00:00
Oleg Kalnichevski 4d0d23dc01 Integration and compatibility tests
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1780849 13f79535-47bb-0310-9956-ffa450edef68
2017-01-29 19:22:20 +00:00
Oleg Kalnichevski cea5b2697b HTTPCLIENT-1802: Do not attempt to match SSL host to subject CN if subject alternative name of any type are given
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1779669 13f79535-47bb-0310-9956-ffa450edef68
2017-01-20 19:21:10 +00:00
Oleg Kalnichevski 4d180773db HTTPCLIENT-1788: RFC 6265 policy must not reject cookies with paths that are no prefix of the uri path
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1778460 13f79535-47bb-0310-9956-ffa450edef68
2017-01-12 19:21:03 +00:00
Oleg Kalnichevski 09bee18bd6 Use extended HostnameVerifier interface that propagates detailed exception in case of hostname verification failure when available
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1778412 13f79535-47bb-0310-9956-ffa450edef68
2017-01-12 10:09:04 +00:00
Oleg Kalnichevski 903c701ef6 HTTPCLIENT-1792: SSLConnectionSocketFactory to throw SSLPeerUnverifiedException with a better error message when hostname verification fails
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1778411 13f79535-47bb-0310-9956-ffa450edef68
2017-01-12 10:08:41 +00:00
Oleg Kalnichevski aaf638b1d5 HTTPCLIENT-1800: wrap redirect around retry in execChain
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1777769 13f79535-47bb-0310-9956-ffa450edef68
2017-01-07 11:39:15 +00:00
Oleg Kalnichevski 1da6fc21ed Moved connection pool construction logic out of HttpClientBuilder into a separate builder class
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1777768 13f79535-47bb-0310-9956-ffa450edef68
2017-01-07 11:38:46 +00:00
Oleg Kalnichevski e48091da3d Upgraded HttpCore to version 5.0-alpha2; Upgraded to the latest 5.0 APIs
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1776187 13f79535-47bb-0310-9956-ffa450edef68
2016-12-27 19:48:07 +00:00
Gary D. Gregory afb3908d2e Allow for checkstyle oddity.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1767398 13f79535-47bb-0310-9956-ffa450edef68
2016-11-01 01:21:33 +00:00
Gary D. Gregory fd412e7bf1 [HTTPCLIENT-1786] Port from Apache Commons Logging to Apache Log4j 2.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1767391 13f79535-47bb-0310-9956-ffa450edef68
2016-10-31 23:24:37 +00:00
Oleg Kalnichevski 28a6d5c481 HTTPCLIENT-1767: Null pointer dereference in EofSensorInputStream and ResponseEntityProxy
EofSensorInputStream is generating NullPointerExceptions in some rare situations. This commit fixes that behaviour for the check methods by dereferencing the instance variable to a final local variable to ensure that if it is not null at the null guard, that it will be not null after that point also to successfully close/abort the stream

In some rare cases, null parameters are sent to ReponseEntityProxy methods, this adds checks on those to ensure that the connections are still released, but the null variable is not dereferenced.

Contributed by Peter Ansell <p_ansell@yahoo.com>

Conflicts:
	httpclient5/src/main/java/org/apache/hc/client5/http/impl/sync/ResponseEntityProxy.java

git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1760585 13f79535-47bb-0310-9956-ffa450edef68
2016-09-13 18:32:38 +00:00
Oleg Kalnichevski f779a4b65d Support changing system default ProxySelector
Contributed by Robin Stevens <stevensro at gmail.com>

The `ProxySelectorRoutePlanner` class which got deprecated in favor of the `SystemDefaultRoutePlanner` could deal with:
- `null` as default `ProxySelector`
- a change in the default `ProxySelector`

This change ports that behavior to the `SystemDefaultRoutePlanner`.

git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1758106 13f79535-47bb-0310-9956-ffa450edef68
2016-08-28 13:02:35 +00:00
Gary D. Gregory 1aff9e9220 Use final.
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1757447 13f79535-47bb-0310-9956-ffa450edef68
2016-08-23 22:27:14 +00:00
Oleg Kalnichevski 4046b8fdcc HTTPCLIENT-1748: Improved compatibility with system authentication API in applets
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1756293 13f79535-47bb-0310-9956-ffa450edef68
2016-08-13 19:55:43 +00:00
Oleg Kalnichevski 1b9c13afa9 HTTPCLIENT-1760: added protected methods to enumerate leased and available connections to PoolingHttpClientConnectionManager
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1756278 13f79535-47bb-0310-9956-ffa450edef68
2016-08-13 15:30:27 +00:00
Oleg Kalnichevski 8081dbdc02 HTTPCLIENT-1746: improved argument validation in URLEncodedUtils
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1746751 13f79535-47bb-0310-9956-ffa450edef68
2016-06-03 19:37:33 +00:00
Oleg Kalnichevski da589ff03a HTTPCLIENT-1736: do not request cred delegation by default when using Kerberos auth
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1746746 13f79535-47bb-0310-9956-ffa450edef68
2016-06-03 19:19:39 +00:00
Oleg Kalnichevski da8e60b2a4 Cleaned up comments
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1745907 13f79535-47bb-0310-9956-ffa450edef68
2016-05-28 17:00:08 +00:00
Oleg Kalnichevski facf463c44 HTTPCLIENT-1744: normalize hostname and certificate CN when matching to CN
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1745906 13f79535-47bb-0310-9956-ffa450edef68
2016-05-28 16:59:23 +00:00
Oleg Kalnichevski e6c051ee1b HTTPCLIENT-1732: SystemDefaultCredentialsProvider to take http.proxyHost and http.proxyPort system properties into account
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1737484 13f79535-47bb-0310-9956-ffa450edef68
2016-04-02 10:26:11 +00:00
Oleg Kalnichevski 66c5016394 HTTPCLIENT-1730: added #setValidateAfterInactivity to HttpClientBuilder
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1736237 13f79535-47bb-0310-9956-ffa450edef68
2016-03-22 19:28:09 +00:00