Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
5.1-beta1, 5.1-beta2, 5.1-beta3
-
None
Description
Here is the commit that broke the behaviour: https://github.com/apache/httpcomponents-core/commit/49591ef92cf6900e71d77e3c84e660b57dd25e1a
And more specifically the change to {{ServerHttp1IOEventHandlerFactory.createHandler():
https://github.com/apache/httpcomponents-core/commit/49591ef92cf6900e71d77e3c84e660b57dd25e1a#diff-20589ec1cfdba10cb3a20ca94611e09a928e533fa60d311af1a25e8157ca01bf
Our code takes the else branch, and the behaviour has changed there.
To make all our tests pass again, the following patch restores the previous behaviour:
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java index 111f6152d..db316097d 100644 --- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java +++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java @@ -75,13 +75,15 @@ public IOEventHandler createHandler(final ProtocolIOSession ioSession, final Obj handshakeTimeout); } } else { - tlsStrategy.upgrade( - ioSession, - null, - ioSession.getLocalAddress(), - ioSession.getRemoteAddress(), - attachment, - handshakeTimeout); + if (tlsStrategy != null && tlsStrategy.upgrade( + ioSession, + null, + ioSession.getLocalAddress(), + ioSession.getRemoteAddress(), + attachment, + handshakeTimeout)) { + endpointScheme = URIScheme.HTTPS.id; + } } return new ServerHttp1IOEventHandler(streamDuplexerFactory.create(endpointScheme, ioSession)); }
(attachment instanceof EndpointParameters) returns false in our case.