diff options
author | Jesse McConnell | 2014-05-26 16:20:07 +0000 |
---|---|---|
committer | Jesse McConnell | 2014-05-26 16:20:07 +0000 |
commit | 5e3e0930e0725830d69c035c79f3878aabe6c14a (patch) | |
tree | 799061d6b9c8b4c89b7d3ae45cff6ab9814f3302 | |
parent | aa3c9322a63e4d740666e8d0ab36d7adc9d75bac (diff) | |
download | org.eclipse.jetty.project-5e3e0930e0725830d69c035c79f3878aabe6c14a.tar.gz org.eclipse.jetty.project-5e3e0930e0725830d69c035c79f3878aabe6c14a.tar.xz org.eclipse.jetty.project-5e3e0930e0725830d69c035c79f3878aabe6c14a.zip |
Revert "434810 better handling of bad messages"
This reverts commit 1e524f378ee77962a84c2b5efafe717078a5465d.
5 files changed, 12 insertions, 137 deletions
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java index 6f164ba226..79f1c28d90 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java @@ -443,13 +443,13 @@ public class HttpParser else if (ch==0) break; else if (ch<0) - throw new BadMessage(-1); + throw new BadMessage(); // count this white space as a header byte to avoid DOS if (_maxHeaderBytes>0 && ++_headerBytes>_maxHeaderBytes) { LOG.warn("padding is too large >"+_maxHeaderBytes); - throw new BadMessage(-1); + throw new BadMessage(HttpStatus.BAD_REQUEST_400); } } return false; @@ -1283,7 +1283,7 @@ public class HttpParser if (_headerBytes>_maxHeaderBytes) { // Don't want to waste time reading data of a closed request - throw new BadMessage(-1,"too much data after closed"); + throw new IllegalStateException("too much data after closed"); } } } @@ -1333,16 +1333,12 @@ public class HttpParser { BufferUtil.clear(buffer); - if (e._code>0) - LOG.warn("badMessage: "+e._code+(e._message!=null?" "+e._message:"")+" for "+_handler); - else - LOG.warn("badMessage: "+(e._message!=null?e._message+" ":"")+"for "+_handler); - + LOG.warn("badMessage: "+e._code+(e._message!=null?" "+e._message:"")+" for "+_handler); if (DEBUG) LOG.debug(e); setState(State.CLOSED); _handler.badMessage(e._code, e._message); - return true; + return false; } catch(Exception e) { @@ -1363,7 +1359,7 @@ public class HttpParser setState(State.CLOSED); } - return true; + return false; } } @@ -1625,9 +1621,7 @@ public class HttpParser /* ------------------------------------------------------------ */ /** Called to signal that a bad HTTP message has been received. - * @param status The bad status to send. If the status is <0, this indicates - * that the message was so bad that a response should not be sent and the - * connection should be immediately closed. + * @param status The bad status to send * @param reason The textual reason for badness */ public void badMessage(int status, String reason); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java index 60353efd43..7ff4d5a2a4 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java @@ -66,7 +66,6 @@ public class HttpChannelState WRITE_CALLBACK, // handle an IO write callback READ_CALLBACK, // handle an IO read callback WAIT, // Wait for further events - IO_WAIT, // Wait for further IO COMPLETE // Complete the channel } @@ -183,7 +182,7 @@ public class HttpChannelState return Action.COMPLETE; case COMPLETED: - return Action.IO_WAIT; + return Action.WAIT; case ASYNC_WOKEN: if (_asyncRead) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java index 7f00e37ce6..16cbbf93d6 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java @@ -474,18 +474,8 @@ public class HttpConnection extends AbstractConnection implements Runnable, Http @Override public void badMessage(int status, String reason) { - if (status<0) - { - getEndPoint().close(); - _parser.atEOF(); - LOG.info("Bad message close of "+getEndPoint()); - completed(); - } - else - { - _generator.setPersistent(false); - super.badMessage(status,reason); - } + _generator.setPersistent(false); + super.badMessage(status,reason); } @Override diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java index 7c997f8051..c6c3eac0ec 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java @@ -40,7 +40,6 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.concurrent.Exchanger; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import javax.servlet.ServletException; @@ -138,90 +137,6 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture * Feed a full header method */ @Test - public void testFullWhite() throws Exception - { - configureServer(new HelloWorldHandler()); - - try (Socket client = newSocket(_serverURI.getHost(), _serverURI.getPort())) - { - client.setSoTimeout(10000); - ((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true); - ((StdErrLog) Log.getLogger(HttpConnection.class)).info("expect request is too large..."); - OutputStream os = client.getOutputStream(); - - byte[] buffer = new byte[64 * 1024]; - Arrays.fill(buffer, (byte)' '); - - os.write(buffer); - os.flush(); - - // Read the close. - readClose(client); - } - finally - { - ((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true); - } - } - - - /* - * Feed a full header method - */ - @Test - public void testFullWhiteAfter() throws Exception - { - - configureServer(new HelloWorldHandler()); - - try (Socket client = newSocket(_serverURI.getHost(), _serverURI.getPort())) - { - ((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true); - ((StdErrLog)Log.getLogger(HttpConnection.class)).info("expect Bad Message close ..."); - OutputStream os = client.getOutputStream(); - - byte[] buffer = new byte[64 * 1024]; - buffer[0]='G'; - buffer[1]='E'; - buffer[2]='T'; - buffer[3]=' '; - buffer[4]='/'; - buffer[5]=' '; - buffer[6]='H'; - buffer[7]='T'; - buffer[8]='T'; - buffer[9]='P'; - buffer[10]='/'; - buffer[11]='1'; - buffer[12]='.'; - buffer[13]='0'; - buffer[14]='\n'; - buffer[15]='\n'; - Arrays.fill(buffer,16,buffer.length-1,(byte)' '); - - os.write(buffer); - os.flush(); - - // Read the response. - long start = System.nanoTime(); - String response = readResponse(client); - long end = System.nanoTime(); - - Assert.assertThat(response, Matchers.containsString("HTTP/1.1 200 OK")); - - Assert.assertThat(TimeUnit.NANOSECONDS.toSeconds(end-start),Matchers.lessThan(1L)); - - } - finally - { - ((StdErrLog)Log.getLogger(HttpConnection.class)).setHideStacks(true); - } - } - - /* - * Feed a full header method - */ - @Test public void testFullMethod() throws Exception { configureServer(new HelloWorldHandler()); @@ -1459,29 +1374,6 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture throw e; } } - - /** - * Read Close. - * - * @param client Open client socket. - * @throws IOException in case of I/O problems - */ - protected static void readClose(Socket client) throws IOException - { - try (BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()))) - { - String line; - - if ((line = br.readLine()) != null) - throw new IllegalStateException("unexpected data: "+line); - - return; - } - catch (IOException e) - { - // expected - } - } protected void writeFragments(byte[] bytes, int[] points, StringBuilder message, OutputStream os) throws IOException, InterruptedException { diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java index 9a8ae62b3c..6cc241a9b0 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java @@ -64,7 +64,7 @@ public class SelectChannelServerSslTest extends HttpServerTestBase public void testFullMethod() throws Exception { // Don't run on Windows (buggy JVM) - // Assume.assumeTrue(!OS.IS_WINDOWS); + Assume.assumeTrue(!OS.IS_WINDOWS); try { @@ -80,7 +80,7 @@ public class SelectChannelServerSslTest extends HttpServerTestBase public void testFullURI() throws Exception { // Don't run on Windows (buggy JVM) - // Assume.assumeTrue(!OS.IS_WINDOWS); + Assume.assumeTrue(!OS.IS_WINDOWS); try { super.testFullURI(); |