Commit Graph

719 Commits

Author SHA1 Message Date
niranjan ghule daac18619a Remove unused code 2022-05-05 10:52:49 +02:00
Oleg Kalnichevski 62fb4bcbe0 HTTPCLIENT-2212: MinimalHttpAsyncClient fails to release client endpoints in case of a connect error (such as TLS handshake failure) 2022-05-05 10:47:27 +02:00
Richard Hernandez 36678c44dc Create daemon threads in InternalAbstractHttpAsyncClient 2022-04-06 12:22:36 -07:00
Anthony Baldocchi 94017237b2
HTTPCLIENT-2080: add getRetryInterval to HttpRequestRetryStrategy for use on retriable IOExceptions (#356) 2022-03-30 16:31:07 +02:00
Ryan Schmitt c395aad5ad Fix infinite recursion in SSLConnectionSocketFactory 2022-03-23 09:09:14 +01:00
Oleg Kalnichevski f00ce5da9e HTTPCLIENT-2200: Protocol interceptors are executed before the connection route has been fully established 2022-03-17 17:43:22 +01:00
Oleg Kalnichevski a3bbcc82ae Upgraded HttpCore to version 5.2-beta1 2022-03-17 17:18:12 +01:00
John Gallagher 5f9bc347ee StringBody: just write the bytes to the output stream 2022-03-16 10:01:24 +01:00
Andriy Redko 6a487ba686
HTTPCLIENT-2209: Pass HttpContext to AsyncClientConnectionOperator (#353) 2022-03-12 18:53:45 +01:00
David Schlosnagle 04aeaa5bcd
Optimize ExecSupport.getNextExchangeId() (#352) 2022-02-26 12:45:18 +01:00
cda007 157174543f Added option to set an IOSessionListener on async client builders 2022-02-21 12:15:30 +01:00
Oleg Kalnichevski 19626731c0 HTTPCLIENT-2203: Corrected target host normalization by the request execution interceptors; added ContextBuilder with support for preemptive authentication initialization 2022-02-13 20:07:47 +01:00
Oleg Kalnichevski 8881ef4b3f Fixed incompatibility with older versions of Android shipping with Commons Codec < 1.4 2022-01-24 14:16:33 +01:00
Oleg Kalnichevski 235900eb57 Bug fix: ByteArrayBuilder incorrectly handles empty strings 2022-01-24 14:05:33 +01:00
Andrei Vasilev 75e8dc6f9b HTTPCLIENT-2198, Fixed NPE in TlsConfig.toString()
Replaced called to Arrays.asList() to Arrays.toString(), which allows for null argument.
2022-01-22 08:55:40 +01:00
Andrei Vasilev d4c0e961ab HTTPCLIENT-2198, Fixed AbstractClientTlsStrategy to respect HttpVersionPolicy
Updated AbstractClientTlsStrategy to pass only the HttpVersionPolicy set by TlsConfig  instead of the entire TlsConfig to H2TlsSupport.selectApplicationProtocols() method.
2022-01-21 09:04:24 +01:00
Oleg Kalnichevski 3ee994b25c HTTPCLIENT-2195, regression: classic ConnectExec incorrectly discards the proxy response body even if the request cannot be executed and the response is final 2022-01-13 15:37:23 +01:00
Arturo Bernal 9e876e7ff0 Remove no need it ConnectionConfig. 2022-01-13 15:04:20 +01:00
Arturo Bernal d2a9977290 HTTPCLIENT-2188 - Improve logging when BasicHttpClientConnectionManager is still allocated 2022-01-13 15:00:54 +01:00
JasonMathison dd0bbda070 Httpclient-2194 async retries not including body (#343) 2022-01-05 21:55:58 +01:00
Oleg Kalnichevski e6ad081b3c Deprecated execute methods that return an open response object in favor of execute methods with a response handler and automatic resource deallocation 2021-12-26 17:02:55 +01:00
Oleg Kalnichevski 19571aa207 Bug fix: Incorrect connection validity check in the async connection manager can cause an IllegalStateException and lead to a connection leak. Treat closed connections as valid due to the connection open check being inherently racy 2021-12-17 10:58:09 +01:00
Arturo Bernal 6ba9b4acdc Method to check if the connection manager has been shut down and is closed or not. 2021-12-15 12:21:59 +01:00
Arturo Bernal f8f5bbda87 Complete test for HTTP Methods. 2021-12-04 13:43:16 +01:00
Arturo Bernal d323e0d684 HTTPCLIENT-2189 - Cookie and Cache APIs to use Java time primitives 2021-11-29 14:21:01 +01:00
Arturo Bernal 0a42d173ef HTTPCLIENT-2186 - Migrate Test to Unit 5. 2021-11-21 19:44:13 +01:00
Arturo Bernal ef9f8ba9ab Convert QOP constants into an enum. 2021-11-19 12:22:58 +01:00
Arturo Bernal d2c59fd5e4 HTTPCLIENT-2065: Simplify additon of content type parameters in MultipartEntityBuilder
This closes #320
2021-11-14 09:51:07 +01:00
Arturo Bernal af2cc82e82 HTTPCLIENT-2066 Provide ByteArrayBody constructors w/o filename parameter
This closes #319
2021-11-13 18:04:46 +01:00
Arturo Bernal 0926f1e07a HTTPCLIENT-2079: version.properties contains non-interpolated value
This closes #321
2021-11-13 17:47:16 +01:00
Michael Osipov f055b3e83b Apply English locale to all date header formatters 2021-11-13 17:09:45 +01:00
Carter Kozak e09c5d0691 HTTPCLIENT-2184: Fix classic client connection reuse
This fixes an issue in which connections were not returned to the
pool when requests contained non-repeatable bodies AND responses
were streamed. When both of these criteria were met, responses
were returned without ResponseEntityProxy enhancements so that
closing the response entity or stream no longer completed the
exchange, thus leaking the connection which forever lived in the
`leased` state in the connection pool.
2021-11-12 17:33:59 -05:00
Arturo Bernal 4d0caa4f42 Fix typo method and class. Deprecate the old ones. 2021-11-12 22:16:52 +01:00
Oleg Kalnichevski 0e8adf79dc Updated examples and unit tests to make use of lambda expressions for response message processing 2021-11-12 22:16:43 +01:00
Arturo Bernal 58386f857b Add @OverRide. 2021-11-06 14:59:45 +01:00
Arturo Bernal 0289c78e8d Use {@code } instead <code>. 2021-11-06 14:59:19 +01:00
Oleg Kalnichevski 1eb2d40df1 Upgraded HttpClient version to 5.2-alpha2-SNAPSHOT 2021-11-01 18:04:02 +01:00
Oleg Kalnichevski 000fa7bc10 Fixed javadoc errors 2021-10-29 14:55:37 +02:00
Arturo Bernal 1fb79b96f6 Make IOReactor IO session decorator and exception callback configurable. 2021-10-26 14:27:09 +02:00
Oleg Kalnichevski dfc2086d24 Replaced SimpleDateFormat and Calendar with Java 8 Time APIs; removed thread-local from DateUtils 2021-10-24 16:50:07 +02:00
Oleg Kalnichevski ffc8cd7585 Updated connection and TLS configuration examples 2021-10-23 19:48:00 +02:00
Oleg Kalnichevski a02455acb3 Support for connection TTL setting on a per-route basis 2021-10-23 19:24:39 +02:00
Arturo Bernal fff097615b Make IOReactor IO session decorator configurable. 2021-10-23 18:34:14 +02:00
Arturo Bernal 012429391c * Fix javadoc typo.
* Use java array declarations instead of "c" way.
2021-10-23 18:10:15 +02:00
Arturo Bernal bc7aae743a Re-use core URIScheme instead of String. 2021-10-23 18:10:15 +02:00
Gary Gregory 238401731b Don't initialize AtomicReference to its default value. 2021-10-23 18:10:15 +02:00
Oleg Kalnichevski 8b73f6b83c HTTPCLIENT-2182: access to SSLSession attributes via reflection disallowed as of Java 16. Core TLS functions now use new Java 1.8 API introduced by 8u251 update 2021-10-23 18:09:11 +02:00
Oleg Kalnichevski b10d43f2bb HTTPCLIENT-2135: TLS configuration on a per-host basis 2021-10-23 18:07:41 +02:00
Gary Gregory 445d4271f9 Use compact array initialization syntax. 2021-10-13 10:36:49 +02:00
Gary Gregory b6ae693fe5 Don't initialize AtomicReference to its default value. 2021-10-13 10:36:49 +02:00
Oleg Kalnichevski 4dd7cefbde Corrected resolution of the target host in DefaultUserTokenHandler 2021-09-29 18:01:47 +02:00
Oleg Kalnichevski fb0c073783 RFC 7230: treat presence of a userinfo component in request URI as an HTTP protocol violation 2021-09-29 18:01:46 +02:00
Oleg Kalnichevski 30c253b37b AuthCache conformance to RFC 7617 2021-09-29 18:01:46 +02:00
Oleg Kalnichevski 5390aef223 Always bind the exchange ID to the execution context 2021-09-29 18:01:46 +02:00
Oleg Kalnichevski 013851d898 Logger cleanup (no functional changes) 2021-09-29 18:01:46 +02:00
Oleg Kalnichevski 4150ac0592 Refactored AuthCache keeping logic into a separate utility class 2021-09-29 18:01:46 +02:00
Oleg Kalnichevski 670f0456ba More consistent handling of request scheme and authority by protocol interceptors 2021-09-29 18:01:46 +02:00
Oleg Kalnichevski 7b47b28d46 Added immutable CredentialsProvider implementations and a CredentialsProvider builder; changed test cases and examples to use immutable CredentialsProvider where possible 2021-09-29 18:01:45 +02:00
Oleg Kalnichevski 17ebfc529e HTTPCLIENT-2120: force HTTP/1.1 protocol policy when creating a tunnel via HTTP/1.1 proxy 2021-09-29 18:01:43 +02:00
Oleg Kalnichevski 9496bb8475 Better connect operation logging 2021-09-18 21:31:10 +02:00
Oleg Kalnichevski 90f69c87b2 HTTPCLIENT-2177: fixed incorrect route state tracking by the async connect executor when negotiating a tunnel via a proxy 2021-09-18 21:31:04 +02:00
Oleg Kalnichevski 4ce032c92c HTTPCLIENT-2177: keep successful tunnel connections alive regardless of `Connection: close` 2021-09-18 21:31:02 +02:00
Oleg Kalnichevski 50f93ec18b HTTPCLIENT-2045: BASIC auth scheme conformance to RFC 7617 2021-09-17 11:17:49 +02:00
Marcono1234 8e8774e6b5 Fix bad test class name 2021-09-11 17:01:59 +02:00
Oleg Kalnichevski 92f757eee3 HTTPCLIENT-2120: support for H2 via HTTP/1.1 proxy 2021-09-09 14:58:49 +02:00
Oleg Kalnichevski bdc7f3b93e Upgraded HttpCore to version 5.2-alpha1 2021-09-09 14:23:37 +02:00
Oleg Kalnichevski c56c00c549 Fixed deprecation warnings that could be fixed and suppressed those that could not 2021-09-09 13:49:44 +02:00
Jaikiran Pai 755b69ea3c Don't retry a request for NoRouteToHostException 2021-08-23 22:24:15 +02:00
Oleg Kalnichevski 5164a4e7b4 HTTPCLIENT-2170: Classic protocol layer no longer releases the underlying connection back to the pool prematurely while the NTLM handshake is still ongoing 2021-08-19 18:58:41 +02:00
Oleg Kalnichevski 29ba623ebe Fixed connection lease request cancellation race in both classic and asyc pooling connection managers 2021-06-28 22:27:01 +02:00
Oleg Kalnichevski aff1d2024c Better exception asserts in unit tests 2021-06-19 21:10:43 +02:00
Arturo Bernal d77112f608 Replace assert calls by simpler but equivalent calls. 2021-06-19 16:47:44 +02:00
Arturo Bernal fde3fca687 Simplify conditions and avoid extra checks.
Inline return variables.
2021-06-19 16:47:41 +02:00
Oleg Kalnichevski 0805cfe582 Updated test cases with exception asserts 2021-05-24 18:53:58 +02:00
Oleg Kalnichevski 82432f50d9 Removed references to deprecated Assert#assertThat 2021-05-24 16:58:33 +02:00
Oleg Kalnichevski 8580d7fddf Redundant type declarations 2021-05-24 14:43:18 +02:00
Oleg Kalnichevski 2072651983 Upgraded Mockito to version 3.10.0 2021-05-24 14:43:08 +02:00
Oleg Kalnichevski f36637dc2f Moved connection management related settings from RequestConfig to new class ConnectionMgmtConfig 2021-05-24 12:43:41 +02:00
Arturo Bernal f5d3c14afd HTTPCLIENT-2139 - Cookie Header HttpOnly attribute 2021-05-24 12:43:34 +02:00
Oleg Kalnichevski 646257e107 Upgraded project version to 5.2-alpha1-SNAPSHOT 2021-05-24 11:30:08 +02:00
Oleg Kalnichevski bb04d078ad Java 1.8 upgrade 2021-05-11 21:34:49 +02:00
Oleg Kalnichevski 6693c186f4 Upgraded HttpClient version to 5.1.1-SNAPSHOT 2021-05-11 21:03:27 +02:00
Oleg Kalnichevski c4b2a8480d Upgraded HttpCore to version 5.1.1 2021-05-07 18:51:03 +02:00
Oleg Kalnichevski d8d7ad37a3 Extra sage-guards for concurrent connection endpoint acquisition and request execution cancellation 2021-04-28 16:31:16 +02:00
Oleg Kalnichevski 09f50cd80c HTTPCLIENT-2152: Fixed handling of unexpected unchecked exception by the async request retry exec interceptor 2021-04-27 13:07:13 +02:00
Oleg Kalnichevski 13137eb6c7 Async clients to support scheduled (delayed) re-execution of requests 2021-04-27 12:57:15 +02:00
Peter Dettman 58a17cc549 HTTPCLIENT-2149: When no dNSName, match against CN 2021-04-10 11:50:23 +02:00
Oleg Kalnichevski 935abae04e HTTPCORE-672: cleanup of H2 connection validation code 2021-04-02 22:06:50 +02:00
Ryan Schmitt f597588198 HttpAsyncClientBuilder: Make IOReactor exception callback configurable 2021-03-31 11:32:23 -07:00
Oleg Kalnichevski 73c1530b3f HTTPCLIENT-2141: HttpClient to not retry requests if the retry interval exceeds the response timeout 2021-03-28 12:28:21 +02:00
Arturo Bernal 879a063b57 Reuse org.apache.hc.core5.http.Method HTTP spec enum 2021-03-16 12:53:31 +01:00
Oleg Kalnichevski 10e2deb210 Blocking connection managers to validate connections after inactivity of more than 2s by default; behavior of async connection managers remains the same 2021-03-16 09:24:14 +01:00
Oleg Kalnichevski 5875ca1c37 Fixed context logging in BasicHttpClientConnectionManager 2021-03-15 21:49:07 +01:00
Oleg Kalnichevski 2404540f1f Deprecated request factory classes in favor of request builders 2021-03-14 22:13:55 +01:00
Oleg Kalnichevski e0c19c0b53 Better javadocs for simple message classes 2021-03-14 20:37:08 +01:00
Oleg Kalnichevski 567b53d4b1 Improved async client examples 2021-03-14 20:08:37 +01:00
Oleg Kalnichevski 1174c240e2 Simple message builders 2021-03-14 18:59:22 +01:00
Sandeep Kulkarni d94495131a Fixed typo for enum name Postion to Position 2021-03-14 16:44:32 +01:00
Arturo Bernal 118e7359a1 Fixed typos javadocs and var names 2021-03-14 16:34:18 +01:00
Oleg Kalnichevski d41d67fa94 Request factory classes to re-use `Method#normalizedValueOf` 2021-03-11 22:47:29 +01:00
Oleg Kalnichevski b6b89a7296 Cleanup of redirect request generation code in Redirect exec interceptors 2021-03-11 22:47:29 +01:00
Oleg Kalnichevski 8b29c0680b Improved proxy request message generation 2021-03-11 22:47:29 +01:00
Oleg Kalnichevski 3de88293fe Deprecated message copiers in favor of generic message builders 2021-03-11 22:47:29 +01:00
leedonggyu 8aea7da1df Remove duplicated conditional statement in ResponseProcessCookies 2021-02-25 10:47:42 +01:00
Oleg Kalnichevski de5c6a237a Deleted sample code moved to HttpComponents Website project 2021-02-23 19:18:47 +01:00
Carey Lin a0184188c1 Fix the issues causing Kerberos/SPNego to fail
1. At the beginning of the negotiate, no token is defined in "WWW-Authenticate: Negotiate".
2. Kerberos expects HTTP.
2021-02-20 17:41:20 +01:00
imbyungjun c39117e366 Fix typo on cookie formatting method 2021-02-16 20:01:54 +01:00
Arturo Bernal f2e9ad3b11 Fix Typo 2021-02-10 22:09:20 +01:00
Oleg Kalnichevski 744c9d8020 Upgraded HttpClient version to 5.1-beta2-SNAPSHOT 2021-02-10 22:06:51 +01:00
Oleg Kalnichevski 4b295dff15 Deprecated some URIUtils methods in favor of URIBuilder 2021-02-06 18:05:01 +01:00
Oleg Kalnichevski e6a7fe8a0c Request message copy optimization 2021-02-06 17:36:24 +01:00
Oleg Kalnichevski f9ea1b6238 Upgraded project version to 5.1-beta1-SNAPSHOT 2021-02-06 13:28:08 +01:00
Oleg Kalnichevski af3a7526d2 RFC 3986 conformance: re-use URIBuilder new functionality in URIUtils#normalizeSyntax 2021-02-06 13:26:52 +01:00
Arturo Bernal 0940d35602 Minor Improvement:
* Avoid duplicate code
* Simplify if else
* Inline variables
2021-02-05 22:18:45 +01:00
Arturo Bernal 3c9f1f85e1 Minor Improvements:
* Use Empty collections
* Unnecessary toString
2021-01-26 09:14:46 +01:00
Oleg Kalnichevski b71e2fcb83 No need to copy example sources as resources when generating site content 2021-01-17 11:12:33 +01:00
Hervé Boutemy 3b0a7aeee8 improve documentation format 2021-01-12 09:33:48 +01:00
Arturo Bernal 6a02e818ff Minor Improvements:
* Remove redundant initialization
2021-01-05 20:01:19 +01:00
Oleg Kalnichevski 8285223560 Improved context and wire logging 2021-01-03 15:18:28 +01:00
Oleg Kalnichevski a0b4dbb34b Improved I/O session logging 2021-01-03 15:18:28 +01:00
Arturo Bernal 36e1bde6ff Minor Improvements:
* Add final to variable
* Unnecessary semicolon
* Use Standard Charset object
* Unnecessary conversion to String
* Simplifiable conditional expression
* Replace 'Arrays.asList()' with Collections.singletonList
* Redundant local variable. Simplify
2020-12-31 13:50:06 +01:00
Rob Spoor 25c124917b
Add interceptors before MAIN_TRANSPORT so they won't be ignored (#272) 2020-12-09 11:54:58 +01:00
Carter Kozak 8d5cfd326e HTTPCLIENT-2104: ManagedHttpClientConnectionFactory supports ResponseOutOfOrderStrategy configuration 2020-12-06 16:38:16 -05:00
Oleg Kalnichevski 22cf9671b1 Fixed generics 2020-12-02 16:11:30 +01:00
Gary Gregory 75f9adea87 Remove redundant returns. 2020-11-24 09:22:25 -05:00
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 594e5fcefb Upgraded HttpClient version to 5.0.3-SNAPSHOT 2020-09-27 12:12:59 +02:00
Michael Osipov c1de3c42de Move public suffix list to generate-resources and apache-release profile 2020-09-22 09:25:43 +02:00
Michael Osipov e13e4ff548 Unify JXR and Surefire report config 2020-09-22 09:25:43 +02:00
Michael Osipov 37c1a9da1d Unify Javadoc report config 2020-09-22 09:25:43 +02:00
Michael Osipov aec050315e Remove default config 2020-09-22 09:25:43 +02:00
Michael Osipov 4b5a2f44a1 Replace HTTP with HTTPS 2020-09-22 09:25:43 +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 889159b977 Upgraded maven-download-plugin to version 1.6.0 2020-07-18 16:04:02 +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
Niels Basjes 9a967de60e Add Automatic-Module-Name in manifest so Java9 modular applications can depend on this library 2020-07-07 15:48:49 +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
Oleg Kalnichevski c6a4a9b376 Upgraded HttpClient version to 5.0.2-SNAPSHOT 2020-06-12 09:48:10 +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 61f3a943e1 Upgraded HttpClient version to 5.0.1-SNAPSHOT 2020-02-22 09:56:16 +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
Oleg Kalnichevski afa8f5ecd1 Upgraded HttpClient version to 5.0-beta8-SNAPSHOT 2020-01-26 12:42:54 +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 25748c48b2 Upgraded HttpClient version to 5.0-beta7-SNAPSHOT 2019-10-09 10:30:55 +02: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