Hi,
Could someone please help to verify if the attached patch (JDK 14) works
HttpComponents?
Thanks & Regards,
Xuelei
On 12/1/2019 5:37 AM, Michael Osipov wrote:
Hi folks,
I am one of the Apache HttpComponents committers and we get these nags
once in a while:
-
https://github.com/apache/httpcomponents-client/pull/178#discussion_r351492056
- https://issues.apache.org/jira/browse/HTTPCLIENT-2032
- https://stackoverflow.com/q/56306216/696632
It all boils down to that IOExceptions are not thrown as-is after the
introduction of TLS 1.3 in Java 11, but now wrapped in SSLExceptions
(partially fixed by JDK-8214339). This is counterproductive.
Questions:
* Why has this change been made?
* Why has the incompatible change not properly communicated to the
users/community?
* Can this be restored back to Java 8 behavior for 15 (14 not likely?!)
and 11u?
Looking into [1] the following requirements have been broken:
- Verify that the implementation does not break backward
compatibility in unexpected ways.
- Verify that the implementation does not introduce any unexpected
interoperability issues.
@Rory, can you engage also with Apache HttpComponents? We are not happy
with the situation.
I see your mails on other MLs like Maven and Tomcat where I commit too.
Regards,
Michael
[1] https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8145252
diff -r 2baa1f8721b8
src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java
--- a/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java Mon Dec
02 18:52:18 2019 +0100
+++ b/src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java Mon Dec
02 10:32:32 2019 -0800
@@ -1254,8 +1254,11 @@
} catch (SSLHandshakeException she) {
// may be record sequence number overflow
throw conContext.fatal(Alert.HANDSHAKE_FAILURE, she);
- } catch (IOException e) {
+ } catch (SSLException ssle) {
throw conContext.fatal(Alert.UNEXPECTED_MESSAGE, e);
+ } // re-throw other IOException, which should be caused by
+ // the underlying plain socket and could be handled by
+ // applications (for example, re-try the connection).
}
// Is the sequence number is nearly overflow, or has the key usage