diff --git a/core/src/main/java/io/undertow/server/protocol/ajp/AjpServerRequestConduit.java b/core/src/main/java/io/undertow/server/protocol/ajp/AjpServerRequestConduit.java index 62475c2104..4ccf7c0941 100644 --- a/core/src/main/java/io/undertow/server/protocol/ajp/AjpServerRequestConduit.java +++ b/core/src/main/java/io/undertow/server/protocol/ajp/AjpServerRequestConduit.java @@ -31,6 +31,7 @@ import io.undertow.conduits.ConduitListener; import io.undertow.server.Connectors; import io.undertow.server.HttpServerExchange; +import io.undertow.server.RequestTooBigException; import io.undertow.util.ImmediatePooledByteBuffer; import org.xnio.IoUtils; import org.xnio.channels.StreamSinkChannel; @@ -202,6 +203,8 @@ public int read(ByteBuffer dst) throws IOException { } assert STATE_FINISHED == state; return -1; + } catch (RequestTooBigException e) { + throw e; } catch (IOException | RuntimeException e) { IoUtils.safeClose(exchange.getConnection()); throw e; diff --git a/core/src/main/java/io/undertow/server/protocol/http/HttpContinue.java b/core/src/main/java/io/undertow/server/protocol/http/HttpContinue.java index 67a704a1f5..b443c27b09 100644 --- a/core/src/main/java/io/undertow/server/protocol/http/HttpContinue.java +++ b/core/src/main/java/io/undertow/server/protocol/http/HttpContinue.java @@ -142,7 +142,6 @@ public void awaitWritable(long time, TimeUnit timeUnit) throws IOException { HttpServerExchange newExchange = exchange.getConnection().sendOutOfBandResponse(exchange); exchange.putAttachment(ALREADY_SENT, true); newExchange.setStatusCode(StatusCodes.CONTINUE); - newExchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, 0); final StreamSinkChannel responseChannel = newExchange.getResponseChannel(); return new ContinueResponseSender() { boolean shutdown = false; @@ -219,7 +218,6 @@ private static void internalSendContinueResponse(final HttpServerExchange exchan HttpServerExchange newExchange = exchange.getConnection().sendOutOfBandResponse(exchange); exchange.putAttachment(ALREADY_SENT, true); newExchange.setStatusCode(StatusCodes.CONTINUE); - newExchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, 0); final StreamSinkChannel responseChannel = newExchange.getResponseChannel(); try { responseChannel.shutdownWrites(); diff --git a/core/src/main/java/io/undertow/server/protocol/http2/Http2UpgradeHandler.java b/core/src/main/java/io/undertow/server/protocol/http2/Http2UpgradeHandler.java index 023ce78941..2a1ca672cc 100644 --- a/core/src/main/java/io/undertow/server/protocol/http2/Http2UpgradeHandler.java +++ b/core/src/main/java/io/undertow/server/protocol/http2/Http2UpgradeHandler.java @@ -74,9 +74,8 @@ public Http2UpgradeHandler(HttpHandler next, String... upgradeStrings) { public void handleRequest(HttpServerExchange exchange) throws Exception { final String upgrade = exchange.getRequestHeaders().getFirst(Headers.UPGRADE); final String settings = exchange.getRequestHeaders().getFirst("HTTP2-Settings"); - if(settings != null && upgrade != null - && upgradeStrings.contains(upgrade)) { - if(HttpContinue.requiresContinueResponse(exchange) && false) { + if(settings != null && upgrade != null && upgradeStrings.contains(upgrade)) { + if(HttpContinue.requiresContinueResponse(exchange)) { HttpContinue.sendContinueResponse(exchange, new IoCallback() { @Override public void onComplete(HttpServerExchange exchange, Sender sender) { diff --git a/core/src/test/java/io/undertow/server/ReadTimeoutTestCase.java b/core/src/test/java/io/undertow/server/ReadTimeoutTestCase.java index 28473aa64d..9a603f6d42 100644 --- a/core/src/test/java/io/undertow/server/ReadTimeoutTestCase.java +++ b/core/src/test/java/io/undertow/server/ReadTimeoutTestCase.java @@ -136,7 +136,7 @@ public long getContentLength() { client.execute(post); } catch (SocketException e) { Assert.assertTrue(e.getMessage(), e.getMessage().contains("Broken pipe") - || e.getMessage().contains("connection abort")); + || e.getMessage().contains("connection abort") || e.getMessage().contains("connection was aborted")); socketFailure = true; } Assert.assertTrue("Test sent request without any exception", socketFailure); diff --git a/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseClientServlet.java b/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseClientServlet.java index 74fd8824ef..0464e72999 100644 --- a/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseClientServlet.java +++ b/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseClientServlet.java @@ -18,9 +18,6 @@ package io.undertow.servlet.test.streams; -import io.undertow.testutils.DefaultServer; -import org.junit.runner.RunWith; - import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServlet; @@ -33,7 +30,6 @@ /** * @author Stuart Douglas */ -@RunWith(DefaultServer.class) public class EarlyCloseClientServlet extends HttpServlet { private static volatile boolean exceptionThrown; diff --git a/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseServlet.java b/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseServlet.java index cdecd3c5de..4f1e4e8dd1 100644 --- a/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseServlet.java +++ b/servlet/src/test/java/io/undertow/servlet/test/streams/EarlyCloseServlet.java @@ -29,12 +29,10 @@ import io.undertow.servlet.handlers.ServletRequestContext; import io.undertow.servlet.spec.HttpServletRequestImpl; import io.undertow.testutils.DefaultServer; -import org.junit.runner.RunWith; /** * @author Stuart Douglas */ -@RunWith(DefaultServer.class) public class EarlyCloseServlet extends HttpServlet { private volatile ServerConnection connection; diff --git a/servlet/src/test/java/io/undertow/servlet/test/streams/ForceDrainServlet.java b/servlet/src/test/java/io/undertow/servlet/test/streams/ForceDrainServlet.java index 7a8f7d4db8..7c61c0d35e 100644 --- a/servlet/src/test/java/io/undertow/servlet/test/streams/ForceDrainServlet.java +++ b/servlet/src/test/java/io/undertow/servlet/test/streams/ForceDrainServlet.java @@ -23,14 +23,10 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.junit.runner.RunWith; - -import io.undertow.testutils.DefaultServer; /** * @author Stuart Douglas */ -@RunWith(DefaultServer.class) public class ForceDrainServlet extends HttpServlet { @Override