163 Commits

Author SHA1 Message Date
Rahul Yadav
c07ce7eec7 8245245: Websocket can lose the URL encoding of URI query parameters
The fix updates jdk.internal.net.http.websocket.OpeningHandshake to avoid double encoding and decoding of URL

Reviewed-by: dfuchs, chegar, prappo
2020-06-29 14:49:03 +01:00
Julia Boes
c0a1a4e4fc 8237470: HttpResponse.BodySubscriber::ofFile throws UOE with non-default file systems
Rework non-default file system paths of BodySubscriber::ofFile and BodyHandler::ofFile and fix BodyHandler::ofFileDownload to throw consistently for non-default file system paths

Reviewed-by: dfuchs, chegar
2020-05-29 12:59:13 +01:00
Daniel Fuchs
a2c35a6acb 8244205: HTTP/2 tunnel connections through proxy may be reused regardless of which proxy is selected
The key used in the HTTP/2 connection pool is updated to take into account the proxy address in case of tunnel connections

Reviewed-by: chegar
2020-05-06 19:19:38 +01:00
Rahul Yadav
ed24927500 8240666: Websocket client’s OpeningHandshake discards the HTTP response body
The fix updates jdk.internal.net.http.websocket. OpeningHandshake.send() method to process the response body from server

Reviewed-by: chegar, dfuchs, prappo
2020-05-06 17:33:32 +01:00
Rahul Yadav
184b433630 8242999: HTTP/2 client may not handle CONTINUATION frames correctly
Updated jdk.internal.net.http.Stream.incoming(Http2Frame frame) to handle continuation frame with END_HEADER flag

Reviewed-by: chegar, dfuchs
2020-04-28 10:30:27 +01:00
Daniel Fuchs
94a99ab9e5 8243246: HTTP Client sometimes gets java.io.IOException -> Invalid chunk header byte 32
The HTTP/1 chunked body parser is updated to discard chunk extensions

Reviewed-by: chegar, alanb
2020-04-24 16:54:30 +01:00
Daniel Fuchs
da1abd18db 8238270: java.net HTTP/2 client does not decrease stream count when receives 204 response
The HTTP/2 Stream is updated to register a trivial data subscriber in case of 204 so that the END_STREAM is correctly processed.

Reviewed-by: chegar
2020-04-20 13:15:45 +01:00
Rahul Yadav
86722cb038 8239594: jdk.tls.client.protocols is not respected
8239595: ssl context version is not respected

The java.net.HttpClient is updated to no longer override any default selected protocols in the SSLContext, in the absence of  any SSLParameters explicitly supplied to the HttpClient.builder.

Reviewed-by: chegar, dfuchs
2020-04-10 10:05:33 +01:00
Julia Boes
d882d528bb 8235459: HttpRequest.BodyPublishers::ofFile assumes the default file system
Add support for non-default file systems to HttpRequest.BodyPublishers::ofFile

Reviewed-by: chegar, dfuchs, amlu
2020-03-26 11:52:15 +00:00
Rahul Yadav
c5a7490809 8240921: Minor correction to HttpResponse.BodySubscribers example
The fix updates the incorrect example of the usage of the class java.net.http.HttpResponse.BodySubscribers.

Reviewed-by: chegar, dfuchs, jboes, pconcannon
2020-03-20 20:16:34 +00:00
Xue-Lei Andrew Fan
d243e40f7b 8241039: Retire the deprecated SSLSession.getPeerCertificateChain() method
Reviewed-by: mullan, alanb, dfuchs
2020-03-20 09:15:00 -07:00
Daniel Fuchs
f40220f578 8238990: java/net/httpclient/HandshakeFailureTest.java failed against TLSv1.3 on Windows
The SSLTube and SSLFlowDelegate are improved to wrap any non-SSL exception that occur during the handshake in an SSLHandshakeException.

Reviewed-by: chegar
2020-02-20 20:04:15 +00:00
Daniel Fuchs
9085b7bdc7 8236596: HttpClient leaves HTTP/2 sockets in CLOSE_WAIT, when using proxy tunnel
Changes Http2ClientImpl::stop to close the TCP connection after sending out the GOAWAY frame.

Reviewed-by: chegar
2020-01-24 17:57:41 +00:00
Daniel Fuchs
c6da6681d4 8236859: WebSocket over authenticating proxy fails with NPE
This change fixes several issues with WebSocket and proxy authentication. The AuthenticationFilter is changed to support an authenticating server accessed through an authenticating proxy. MultiExchange is fixed to close the previous connection if a new connection is necessary to establish the websocket (websocket connections are not cached and must be closed in that case). WebSocket OpeningHandshake is fixed to close the connection (without creating the RawChannel) if the opening handshake doesn't result in 101 upgrade protocol.

Reviewed-by: prappo, chegar
2020-01-17 17:55:06 +00:00
Ivan Gerasimov
cd589d8469 8234147: Avoid looking up standard charsets in core libraries
Reviewed-by: alanb
2019-12-01 15:29:37 -08:00
Julia Boes
d948bfd584 8232853: AuthenticationFilter.Cache::remove may throw ConcurrentModificationException
Change implementation to use iterator instead of plain LinkedList

Reviewed-by: dfuchs, vtewari
2019-11-08 11:15:16 +00:00
Daniel Fuchs
b3477399d0 8232625: HttpClient redirect policy should be more conservative
When enabled, HttpClient redirect is fixed to drop the body when the request method is changed, and to relay any redirection code it does not understand to the caller.

Reviewed-by: chegar
2019-10-23 15:54:39 +01:00
Daniel Fuchs
ecde34ee35 8231449: HttpClient’s client ssl certificate authentication seems to be broken
SSLFlowDelegate.Reader and SubscriberWrapper are changed to better cooperate on when more demand should be requested from upstream. The issue encountered in this scenario was triggered by a large certificate which caused the SSLFlowDelegate to stop requesting data from upstream during the handshake although the engine handshake status was NEED_UNWRAP.

Reviewed-by: chegar
2019-10-16 14:50:53 +01:00
Daniel Fuchs
10e4fd4b95 8230526: jdk.internal.net.http.PlainProxyConnection is never reused by HttpClient
Fixed the PlainProxyConnection lookup key.

Reviewed-by: chegar
2019-09-09 18:23:39 +01:00
Michael McMahon
e3b6b7f842 8199849: Add support for UTF-8 encoded credentials in HTTP Basic Authentication
Reviewed-by: chegar, dfuchs
2019-08-22 14:36:10 +01:00
Patrick Concannon
9f7cbf60e4 8228970: AssertionError in ResponseSubscribers$HttpResponseInputStream
HttpResponseInputStream::read(byte[],int,int) now implements the same check than the InputStream::read(byte[],int,int).

Reviewed-by: prappo, chegar, dfuchs
2019-08-08 18:44:11 +01:00
Michael McMahon
faea44aec3 8222968: ByteArrayPublisher is not thread-safe resulting in broken re-use of HttpRequests
Reviewed-by: chegar, dfuchs
2019-06-28 11:26:07 +01:00
Pavel Rappo
b870874d22 Merge 2019-06-19 12:17:22 +01:00
Pavel Rappo
d49e648148 8226303: Examine the HttpRequest.BodyPublishers for exception handling
Reviewed-by: chegar
2019-06-18 14:12:06 +01:00
Chris Hegarty
af2a46b094 8225583: Examine the HttpResponse.BodySubscribers for null handling
Reviewed-by: dfuchs, prappo
2019-06-18 14:52:36 +01:00
Jaikiran Pai
a92f0016f3 8217705: HttpClient - wrong exception type when bad status line is received
Throw a ProtocolException if the status code in the HTTP response's status line isn't a 3-digit integer

Reviewed-by: dfuchs
2019-06-14 10:19:04 +05:30
Christoph Langer
fd67f8ee69 8223553: Fix code constructs that do not compile with the Eclipse Java Compiler
Reviewed-by: smarks, dfuchs
2019-05-24 07:56:29 +01:00
Daniel Fuchs
853da81cfe 8222527: HttpClient doesn't send HOST header when tunelling HTTP/1.1 through http proxy
HttpClient no longer filters out system host header when sending tunelling CONNECT request to proxy

Reviewed-by: michaelm
2019-04-18 17:56:46 +01:00
Daniel Fuchs
47b9d898ab 8221395: HttpClient leaving connections in CLOSE_WAIT state until Java process ends
When a non WebSocket connection is not returned to the pool, it needs to be closed even if HttpConnection::isOpen yields false.

Reviewed-by: chegar, michaelm
2019-03-28 12:16:36 +00:00
Xue-Lei Andrew Fan
42cb9bf51a 8160247: Mark deprecated javax.security.cert APIs with forRemoval=true
Reviewed-by: weijun
2019-03-13 07:14:50 -07:00
Chris Hegarty
bcdbc436ec 8220480: Typo in java.net.http.HttpResponse.BodySubscriber documentation
Reviewed-by: alanb
2019-03-13 12:02:04 +00:00
Chris Hegarty
ac5daa7a22 Merge 2019-02-08 13:07:44 +00:00
Chris Hegarty
bba5ddd08f Merge 2019-02-08 12:44:16 +00:00
Chris Hegarty
fb05ae21bb 8218662: Allow 204 responses with Content-Length:0
Reviewed-by: michaelm
2019-02-08 12:23:16 +00:00
Chris Hegarty
10a281c485 8218546: Unable to connect to https://google.com using java.net.HttpClient
Reviewed-by: dfuchs
2019-02-08 11:26:21 +00:00
Chris Hegarty
46f4ab603b 8217429: WebSocket over authenticating proxy fails to send Upgrade headers
Reviewed-by: dfuchs, prappo
2019-01-28 13:51:16 +00:00
Daniel Fuchs
7f10cbedd5 8217627: HttpClient: The API documentation of BodySubscribers::mapping promotes bad behavior
The API documentation is updated to steer away from blocking in the mapper function, and an alternative is suggested.

Reviewed-by: chegar
2019-01-25 18:13:25 +00:00
Daniel Fuchs
a8ae1c1332 8217264: HttpClient: Blocking operations in mapper function do not work as documented
Ensures that a new task is spawned when calling getBody() on a mapping BodySubscriber.

Reviewed-by: chegar
2019-01-24 12:32:42 +00:00
Daniel Fuchs
be88e181e2 8216561: HttpClient: The logic of retry on connect exception is inverted
Allows retry on connect exception by default, ensuring that the second attempt takes into account the time spent in the first attempt in order to honor the connect timeout value (if present).

Reviewed-by: chegar
2019-01-18 17:06:29 +00:00
Michael McMahon
d089a4ae51 8217237: HttpClient does not deal well with multi-valued WWW-Authenticate challenge headers
Reviewed-by: chegar, dfuchs
2019-01-17 15:24:20 +00:00
Daniel Fuchs
3b68bb2960 8217094: HttpClient SSL race if a socket IOException is raised before ALPN is available
The patch makes suer that the SSLFlowDelegate's ALPN CF is always completed

Reviewed-by: chegar
2019-01-16 19:09:16 +00:00
Daniel Fuchs
ca77adf19f 8216974: HttpConnection not returned to the pool after 204 response
MultiExchange now call nullBody() on Exchange after receiving 204

Reviewed-by: chegar
2019-01-15 11:34:20 +00:00
Daniel Fuchs
ad67fe1baf 8216478: Cleanup HttpResponseImpl back reference to HttpConnection
Retain a reference to Exchange and HttpConnection only when necessary, i.e. for WebSocket initial connection.

Reviewed-by: chegar
2019-01-14 10:46:08 +00:00
Daniel Fuchs
6627b03332 8216498: Confusing and unneeded wrapping of SSLHandshakeException
[httpclient] Avoid wrapping SSLHandshakeException in plain IOException

Reviewed-by: chegar
2019-01-11 14:48:19 +00:00
Roger Riggs
938b844088 8214971: Replace use of string.equals("") with isEmpty()
Reviewed-by: jlaskey, prappo, lancea, dfuchs, redestad
2018-12-07 11:51:17 -05:00
Jonathan Gibbons
37dc9e2a0d 8213910: Invalid HTML in java.net.http.HttpClient
Reviewed-by: mchung, darcy
2018-11-14 16:11:21 -08:00
Michael McMahon
028f2e14b3 8213189: Make restricted headers in HTTP Client configurable and remove Date by default
Reviewed-by: dfuchs
2018-11-14 14:23:21 +00:00
Pavel Rappo
8c361a3e74 8213490: Networking area typos and inconsistencies cleanup
Reviewed-by: alanb, chegar, dfuchs
2018-11-13 12:24:34 +00:00
Michael McMahon
ae21c81dd7 8212926: HttpClient does not retrieve files with large sizes over HTTP/1.1
Reviewed-by: chegar, dfuchs
2018-10-25 12:09:41 +01:00
Michael McMahon
b9279ef850 8211437: java.net.http.HttpClient hangs on 204 reply without Content-length 0
Reviewed-by: chegar, dfuchs
2018-10-19 14:23:43 +01:00