Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2013-02-21 01:43:18 +0000
committerGreg Wilkins2013-02-21 01:43:18 +0000
commit27cad4960b06f2f5277bd35ef3dc677caedec844 (patch)
treef4500cac823ca0053e3b87465b808fe958f15e7f /jetty-servlets
parente210dfbccada69e08111a4b7ab2ccdce06bca0aa (diff)
downloadorg.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.java48
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"));
+
+ }
}

Back to the top