diff options
author | Simone Bordet | 2015-11-04 12:50:26 +0000 |
---|---|---|
committer | Simone Bordet | 2015-11-04 12:50:26 +0000 |
commit | 82d0807863990a3e26636ba09945e930adf6d5dd (patch) | |
tree | ca24787ca6600a0e2058e141e388cc16d5f1baab | |
parent | 670fcf83db039bc0b8061edcce97ea5ec488c337 (diff) | |
parent | e54fe641df4394343c221b6bf376c86bc6dabed7 (diff) | |
download | org.eclipse.jetty.project-82d0807863990a3e26636ba09945e930adf6d5dd.tar.gz org.eclipse.jetty.project-82d0807863990a3e26636ba09945e930adf6d5dd.tar.xz org.eclipse.jetty.project-82d0807863990a3e26636ba09945e930adf6d5dd.zip |
Merged branch 'jetty-9.3.x' into 'master'.
3 files changed, 63 insertions, 3 deletions
diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpConnectionOverHTTP.java b/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpConnectionOverHTTP.java index 564e91a2cc..5c60de2c66 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpConnectionOverHTTP.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpConnectionOverHTTP.java @@ -42,8 +42,8 @@ public class HttpConnectionOverHTTP extends AbstractConnection implements Connec private static final Logger LOG = Log.getLogger(HttpConnectionOverHTTP.class); private final AtomicBoolean closed = new AtomicBoolean(); - private final Promise<Connection> promise; private final AtomicInteger sweeps = new AtomicInteger(); + private final Promise<Connection> promise; private final Delegate delegate; private final HttpChannelOverHTTP channel; private long idleTimeout; diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/AbstractHttpClientServerTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/AbstractHttpClientServerTest.java index edb6c9ce71..9cea0fd213 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/AbstractHttpClientServerTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/AbstractHttpClientServerTest.java @@ -60,6 +60,12 @@ public abstract class AbstractHttpClientServerTest public void start(Handler handler) throws Exception { + startServer(handler); + startClient(); + } + + protected void startServer(Handler handler) throws Exception + { if (sslContextFactory != null) { sslContextFactory.setEndpointIdentificationAlgorithm(""); @@ -79,8 +85,6 @@ public abstract class AbstractHttpClientServerTest server.addConnector(connector); server.setHandler(handler); server.start(); - - startClient(); } protected void startClient() throws Exception diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java index 1d803b9548..10cac8fba3 100644 --- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java +++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java @@ -1434,6 +1434,62 @@ public class HttpClientTest extends AbstractHttpClientServerTest } @Test + public void testRequestSentOnlyAfterConnectionOpen() throws Exception + { + startServer(new AbstractHandler() + { + @Override + public void handle(String target, org.eclipse.jetty.server.Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + baseRequest.setHandled(true); + } + }); + + final AtomicBoolean open = new AtomicBoolean(); + client = new HttpClient(new HttpClientTransportOverHTTP() + { + @Override + protected HttpConnectionOverHTTP newHttpConnection(EndPoint endPoint, HttpDestination destination, Promise<Connection> promise) + { + return new HttpConnectionOverHTTP(endPoint, destination, promise) + { + @Override + public void onOpen() + { + open.set(true); + super.onOpen(); + } + }; + } + }, sslContextFactory); + client.start(); + + final CountDownLatch latch = new CountDownLatch(2); + client.newRequest("localhost", connector.getLocalPort()) + .scheme(scheme) + .onRequestBegin(new Request.BeginListener() + { + @Override + public void onBegin(Request request) + { + Assert.assertTrue(open.get()); + latch.countDown(); + } + }) + .send(new Response.CompleteListener() + { + @Override + public void onComplete(Result result) + { + if (result.isSucceeded()) + latch.countDown(); + } + }); + + Assert.assertTrue(latch.await(5, TimeUnit.SECONDS)); + } + + @Test public void testCONNECTWithHTTP10() throws Exception { try (ServerSocket server = new ServerSocket(0)) |