diff options
author | Greg Wilkins | 2013-02-21 01:43:18 +0000 |
---|---|---|
committer | Greg Wilkins | 2013-02-21 01:43:18 +0000 |
commit | 27cad4960b06f2f5277bd35ef3dc677caedec844 (patch) | |
tree | f4500cac823ca0053e3b87465b808fe958f15e7f /jetty-servlets | |
parent | e210dfbccada69e08111a4b7ab2ccdce06bca0aa (diff) | |
download | org.eclipse.jetty.project-27cad4960b06f2f5277bd35ef3dc677caedec844.tar.gz org.eclipse.jetty.project-27cad4960b06f2f5277bd35ef3dc677caedec844.tar.xz org.eclipse.jetty.project-27cad4960b06f2f5277bd35ef3dc677caedec844.zip |
401382 Prevent parseAvailable from parsing next chunk when previous has not been consumed
Diffstat (limited to 'jetty-servlets')
-rw-r--r-- | jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ProxyServletTest.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ProxyServletTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ProxyServletTest.java index fd1ccd3fe4..e52bbc6b4b 100644 --- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ProxyServletTest.java +++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ProxyServletTest.java @@ -32,6 +32,8 @@ import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.IO; +import org.eclipse.jetty.util.StringUtil; import org.hamcrest.core.Is; import org.hamcrest.core.IsEqual; import org.junit.After; @@ -44,6 +46,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.MalformedURLException; +import java.net.Socket; import java.util.Arrays; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -239,4 +242,49 @@ public class ProxyServletTest exchange.waitForDone(); assertThat(excepted.get(),equalTo(true)); } + + + @Test + public void testChunkedPut() throws Exception + { + init(new HttpServlet() + { + @Override + protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + { + resp.setContentType("text/plain"); + String message=IO.toString(req.getInputStream()); + resp.getOutputStream().print(message); + } + }); + + + Socket client = new Socket("localhost",_connector.getLocalPort()); + client.setSoTimeout(1000000); + client.getOutputStream().write(( + "PUT /proxy/test HTTP/1.1\r\n"+ + "Host: localhost:"+_connector.getLocalPort()+"\r\n"+ + "Transfer-Encoding: chunked\r\n"+ + "Content-Type: text/plain\r\n"+ + "Connection: close\r\n"+ + "\r\n"+ + "A\r\n"+ + "0123456789\r\n"+ + "9\r\n"+ + "ABCDEFGHI\r\n"+ + "8\r\n"+ + "JKLMNOPQ\r\n"+ + "7\r\n"+ + "RSTUVWX\r\n"+ + "2\r\n"+ + "YZ\r\n"+ + "0\r\n" + ).getBytes(StringUtil.__ISO_8859_1_CHARSET)); + + + String response=IO.toString(client.getInputStream()); + Assert.assertTrue(response.contains("200 OK")); + Assert.assertTrue(response.contains("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")); + + } } |