From 8a7ab7d4502f359c4c1d9598b1cf35f07ea79a7a Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 6 Jul 2011 15:05:45 +0000 Subject: [PATCH] Correct regression caused by connector re-factoring that meant that sendfile data was not reset between pipe-lined HTTP requests. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1143457 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/coyote/http11/AbstractHttp11Processor.java | 9 +++++++++ java/org/apache/coyote/http11/Http11AprProcessor.java | 5 +++++ java/org/apache/coyote/http11/Http11NioProcessor.java | 5 +++++ java/org/apache/coyote/http11/Http11Processor.java | 5 +++++ webapps/docs/changelog.xml | 4 ++++ 5 files changed, 28 insertions(+) diff --git a/java/org/apache/coyote/http11/AbstractHttp11Processor.java b/java/org/apache/coyote/http11/AbstractHttp11Processor.java index 78bfc74bf..c1aa4b0e9 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Processor.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Processor.java @@ -776,6 +776,9 @@ public abstract class AbstractHttp11Processor extends AbstractProcessor { http09 = false; contentDelimitation = false; expectation = false; + + prepareRequestInternal(); + if (endpoint.isSSLEnabled()) { request.scheme().setString("https"); } @@ -971,6 +974,12 @@ public abstract class AbstractHttp11Processor extends AbstractProcessor { /** + * Connector implementation specific request preparation. Ideally, this will + * go away in the future. + */ + protected abstract void prepareRequestInternal(); + + /** * When committing the response, we have to validate the set of headers, as * well as setup the response filters. */ diff --git a/java/org/apache/coyote/http11/Http11AprProcessor.java b/java/org/apache/coyote/http11/Http11AprProcessor.java index 0d4cb6b77..56f9ef337 100644 --- a/java/org/apache/coyote/http11/Http11AprProcessor.java +++ b/java/org/apache/coyote/http11/Http11AprProcessor.java @@ -621,6 +621,11 @@ public class Http11AprProcessor extends AbstractHttp11Processor { @Override + protected void prepareRequestInternal() { + sendfileData = null; + } + + @Override protected boolean prepareSendfile(OutputFilter[] outputFilters) { String fileName = (String) request.getAttribute( "org.apache.tomcat.sendfile.filename"); diff --git a/java/org/apache/coyote/http11/Http11NioProcessor.java b/java/org/apache/coyote/http11/Http11NioProcessor.java index c277eab4e..ecb041590 100644 --- a/java/org/apache/coyote/http11/Http11NioProcessor.java +++ b/java/org/apache/coyote/http11/Http11NioProcessor.java @@ -676,6 +676,11 @@ public class Http11NioProcessor extends AbstractHttp11Processor { @Override + protected void prepareRequestInternal() { + sendfileData = null; + } + + @Override protected boolean prepareSendfile(OutputFilter[] outputFilters) { String fileName = (String) request.getAttribute( "org.apache.tomcat.sendfile.filename"); diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java index 852eba4f4..e332e71ce 100644 --- a/java/org/apache/coyote/http11/Http11Processor.java +++ b/java/org/apache/coyote/http11/Http11Processor.java @@ -582,6 +582,11 @@ public class Http11Processor extends AbstractHttp11Processor { @Override + protected void prepareRequestInternal() { + // NOOP for BIO + } + + @Override protected boolean prepareSendfile(OutputFilter[] outputFilters) { // Should never, ever call this code Exception e = new Exception(); diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 4b3e50b53..7c1e8219d 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -86,6 +86,10 @@ Correct regression caused by connector re-factoring that made AJP APR/native connector very unstable on Windows platforms. (markt) + + Correct regression caused by connector re-factoring that meant that + sendfile data was not reset between pipe-lined HTTP requests. (markt) + -- 2.11.0