diff options
author | Simone Bordet | 2016-02-10 14:05:39 +0000 |
---|---|---|
committer | Simone Bordet | 2016-02-10 14:05:39 +0000 |
commit | 1bc4fe6d392e9522d2fb87da77e493f4cca759b0 (patch) | |
tree | 2e684ef6a19f3a9136a2892d05db26d25278a049 | |
parent | 2ac465a34327c95efc3cc00b672e7ab4dced727c (diff) | |
parent | a1a8f6aeae1597f709458a78fb683dd0562633b3 (diff) | |
download | org.eclipse.jetty.project-1bc4fe6d392e9522d2fb87da77e493f4cca759b0.tar.gz org.eclipse.jetty.project-1bc4fe6d392e9522d2fb87da77e493f4cca759b0.tar.xz org.eclipse.jetty.project-1bc4fe6d392e9522d2fb87da77e493f4cca759b0.zip |
Merged branch 'jetty-9.3.x' into 'master'.
2 files changed, 34 insertions, 0 deletions
diff --git a/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpConnectionOverHTTP2.java b/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpConnectionOverHTTP2.java index 6bc69f99af..edc1987bd0 100644 --- a/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpConnectionOverHTTP2.java +++ b/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpConnectionOverHTTP2.java @@ -26,6 +26,7 @@ import org.eclipse.jetty.client.HttpConnection; import org.eclipse.jetty.client.HttpDestination; import org.eclipse.jetty.client.HttpExchange; import org.eclipse.jetty.client.SendFailure; +import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http2.ErrorCode; import org.eclipse.jetty.http2.api.Session; import org.eclipse.jetty.util.Callback; @@ -50,6 +51,7 @@ public class HttpConnectionOverHTTP2 extends HttpConnection @Override protected SendFailure send(HttpExchange exchange) { + exchange.getRequest().version(HttpVersion.HTTP_2); normalizeRequest(exchange.getRequest()); // One connection maps to N channels, so for each exchange we create a new channel. diff --git a/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/HttpClientTransportOverHTTP2Test.java b/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/HttpClientTransportOverHTTP2Test.java index 1dcd6066d0..2f52810e07 100644 --- a/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/HttpClientTransportOverHTTP2Test.java +++ b/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/HttpClientTransportOverHTTP2Test.java @@ -18,12 +18,17 @@ package org.eclipse.jetty.http2.client.http; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.http.HttpFields; @@ -36,6 +41,8 @@ import org.eclipse.jetty.http2.client.HTTP2Client; import org.eclipse.jetty.http2.frames.DataFrame; import org.eclipse.jetty.http2.frames.HeadersFrame; import org.eclipse.jetty.http2.frames.ResetFrame; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.thread.QueuedThreadPool; @@ -146,6 +153,31 @@ public class HttpClientTransportOverHTTP2Test extends AbstractTest } } + @Test + public void testRequestHasHTTP2Version() throws Exception + { + start(new AbstractHandler() + { + @Override + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + baseRequest.setHandled(true); + HttpVersion version = HttpVersion.fromString(request.getProtocol()); + response.setStatus(version == HttpVersion.HTTP_2 ? HttpStatus.OK_200 : HttpStatus.INTERNAL_SERVER_ERROR_500); + } + }); + + ContentResponse response = client.newRequest("localhost", connector.getLocalPort()) + .onRequestBegin(request -> + { + if (request.getVersion() != HttpVersion.HTTP_2) + request.abort(new Exception("Not a HTTP/2 request")); + }) + .send(); + + Assert.assertEquals(HttpStatus.OK_200, response.getStatus()); + } + @Ignore @Test public void testExternalServer() throws Exception |