diff options
Diffstat (limited to 'jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java')
-rw-r--r-- | jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java b/jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java index 219f6f0ee9..cc7eb05f58 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java @@ -30,6 +30,7 @@ import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpScheme; +import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.http.PreEncodedHttpField; import org.eclipse.jetty.io.ssl.SslConnection; import org.eclipse.jetty.io.ssl.SslConnection.DecryptedEndPoint; @@ -159,16 +160,22 @@ public class SecureRequestCustomizer implements HttpConfiguration.Customizer @Override public void customize(Connector connector, HttpConfiguration channelConfig, Request request) { - if (request.getHttpChannel().getEndPoint() instanceof DecryptedEndPoint) + EndPoint endp = request.getHttpChannel().getEndPoint(); + if (endp instanceof DecryptedEndPoint) { - - if (request.getHttpURI().getScheme()==null) - request.setScheme(HttpScheme.HTTPS.asString()); - - SslConnection.DecryptedEndPoint ssl_endp = (DecryptedEndPoint)request.getHttpChannel().getEndPoint(); + SslConnection.DecryptedEndPoint ssl_endp = (DecryptedEndPoint)endp; SslConnection sslConnection = ssl_endp.getSslConnection(); SSLEngine sslEngine=sslConnection.getSSLEngine(); customize(sslEngine,request); + + if (request.getHttpURI().getScheme()==null) + request.setScheme(HttpScheme.HTTPS.asString()); + } + else if (endp instanceof ProxyConnectionFactory.ProxyEndPoint) + { + ProxyConnectionFactory.ProxyEndPoint proxy = (ProxyConnectionFactory.ProxyEndPoint)endp; + if (request.getHttpURI().getScheme()==null && proxy.getAttribute(ProxyConnectionFactory.TLS_VERSION)!=null) + request.setScheme(HttpScheme.HTTPS.asString()); } if (HttpScheme.HTTPS.is(request.getScheme())) @@ -216,7 +223,6 @@ public class SecureRequestCustomizer implements HttpConfiguration.Customizer */ protected void customize(SSLEngine sslEngine, Request request) { - request.setScheme(HttpScheme.HTTPS.asString()); SSLSession sslSession = sslEngine.getSession(); if (_sniHostCheck) |