You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/06/03 14:14:18 UTC
svn commit: r1599500 - in /tomcat/trunk:
java/org/apache/coyote/http11/AbstractHttp11Processor.java
test/org/apache/catalina/startup/SimpleHttpClient.java
test/org/apache/coyote/http11/TestAbstractHttp11Processor.java
Author: markt
Date: Tue Jun 3 12:14:17 2014
New Revision: 1599500
URL: http://svn.apache.org/r1599500
Log:
As per RFC2616, an unknown expect header should result in a 417 response.
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java
tomcat/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1599500&r1=1599499&r2=1599500&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Tue Jun 3 12:14:17 2014
@@ -1250,10 +1250,14 @@ public abstract class AbstractHttp11Proc
if (http11) {
expectMB = headers.getValue("expect");
}
- if ((expectMB != null)
- && (expectMB.indexOfIgnoreCase("100-continue", 0) != -1)) {
- getInputBuffer().setSwallowInput(false);
- expectation = true;
+ if (expectMB != null) {
+ if (expectMB.indexOfIgnoreCase("100-continue", 0) != -1) {
+ getInputBuffer().setSwallowInput(false);
+ expectation = true;
+ } else {
+ error = true;
+ response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
+ }
}
// Check user-agent header
Modified: tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java?rev=1599500&r1=1599499&r2=1599500&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java Tue Jun 3 12:14:17 2014
@@ -54,6 +54,7 @@ public abstract class SimpleHttpClient {
public static final String FAIL_404 = "HTTP/1.1 404";
public static final String TIMEOUT_408 = "HTTP/1.1 408";
public static final String FAIL_413 = "HTTP/1.1 413";
+ public static final String FAIL_417 = "HTTP/1.1 417";
public static final String FAIL_50X = "HTTP/1.1 50";
public static final String FAIL_500 = "HTTP/1.1 500";
public static final String FAIL_501 = "HTTP/1.1 501";
@@ -421,6 +422,10 @@ public abstract class SimpleHttpClient {
return getResponseLine().startsWith(FAIL_413);
}
+ public boolean isResponse417() {
+ return getResponseLine().startsWith(FAIL_417);
+ }
+
public boolean isResponse50x() {
return getResponseLine().startsWith(FAIL_50X);
}
Modified: tomcat/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java?rev=1599500&r1=1599499&r2=1599500&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java (original)
+++ tomcat/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java Tue Jun 3 12:14:17 2014
@@ -53,6 +53,31 @@ import org.apache.tomcat.util.buf.ByteCh
public class TestAbstractHttp11Processor extends TomcatBaseTest {
@Test
+ public void testWithUnknownExpectation() throws Exception {
+ Tomcat tomcat = getTomcatInstance();
+
+ // Use the normal Tomcat ROOT context
+ File root = new File("test/webapp");
+ tomcat.addWebapp("", root.getAbsolutePath());
+
+ tomcat.start();
+
+ String request =
+ "POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
+ "Host: any" + SimpleHttpClient.CRLF +
+ "Expect: unknoen" + SimpleHttpClient.CRLF +
+ SimpleHttpClient.CRLF;
+
+ Client client = new Client(tomcat.getConnector().getLocalPort());
+ client.setRequest(new String[] {request});
+
+ client.connect();
+ client.processRequest();
+ assertTrue(client.isResponse417());
+ }
+
+
+ @Test
public void testWithTEVoid() throws Exception {
Tomcat tomcat = getTomcatInstance();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org