diff options
author | Simone Bordet | 2016-01-20 14:57:36 +0000 |
---|---|---|
committer | Simone Bordet | 2016-01-20 14:57:36 +0000 |
commit | d7a632699e3b1e369d5d13d6e3b06205ea846856 (patch) | |
tree | c37cba21c71157b51b2205c1b806c99fde2c780f | |
parent | 7129cbe3a3bf807e5914d588e66b1a33d985a6df (diff) | |
parent | 07904e2fbe398b5b31e31c93f3bc6c91caebacab (diff) | |
download | org.eclipse.jetty.project-d7a632699e3b1e369d5d13d6e3b06205ea846856.tar.gz org.eclipse.jetty.project-d7a632699e3b1e369d5d13d6e3b06205ea846856.tar.xz org.eclipse.jetty.project-d7a632699e3b1e369d5d13d6e3b06205ea846856.zip |
Merged branch 'jetty-7' into 'jetty-8'.
3 files changed, 55 insertions, 1 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 5d24c9cac3..1effdada24 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 @@ -637,8 +637,8 @@ public class HttpParser implements Parser break; case HttpTokens.NO_CONTENT: - _handler.headerComplete(); _state=_persistent||(_responseStatus>=100&&_responseStatus<200)?STATE_END:STATE_SEEKING_EOF; + _handler.headerComplete(); _handler.messageComplete(_contentPosition); return 1; diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java index 42bd11d3c3..ccdd878900 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java @@ -922,6 +922,8 @@ public abstract class AbstractHttpConnection extends AbstractConnection { _generator.setPersistent(true); _parser.setPersistent(true); + if (_parser instanceof HttpParser) + ((HttpParser)_parser).setState(HttpParser.STATE_END); } if (_server.getSendDateHeader()) 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 899038e499..4fabe954dd 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 @@ -1234,6 +1234,58 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture } } + @Test + public void testAvailableForPipelinedRequests() throws Exception + { + configureServer(new AbstractHandler() + { + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + baseRequest.setHandled(true); + int available = request.getInputStream().available(); + ServletOutputStream output = response.getOutputStream(); + output.println(target); + output.println(String.valueOf(available)); + } + }); + + Socket client = newSocket(HOST,_connector.getLocalPort()); + try + { + OutputStream output = client.getOutputStream(); + InputStream input = client.getInputStream(); + + output.write(( + "GET /one HTTP/1.1\r\n"+ + "host: "+HOST+":"+_connector.getLocalPort()+"\r\n"+ + "\r\n"+ + "GET /two HTTP/1.1\r\n"+ + "host: "+HOST+":"+_connector.getLocalPort()+"\r\n"+ + "\r\n" + ).getBytes()); + output.flush(); + + BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8")); + + while(reader.readLine().length() > 0) + { + // Skip response headers. + } + assertEquals("/one", reader.readLine()); + assertEquals(0, Integer.parseInt(reader.readLine())); + + while(reader.readLine().length() > 0) + { + // Skip response headers. + } + assertEquals("/two", reader.readLine()); + assertEquals(0, Integer.parseInt(reader.readLine())); + } + finally + { + client.close(); + } + } @Test public void testDualRequest1() throws Exception |