From: jfclere Date: Tue, 29 Jun 2010 10:13:54 +0000 (+0000) Subject: Arrange filter logic. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=e3af8d6ae3cc48412c462ca5e6d1b3dcf7c6c97c;p=tomcat7.0 Arrange filter logic. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@958911 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/coyote/http11/AbstractHttp11Processor.java b/java/org/apache/coyote/http11/AbstractHttp11Processor.java index bf0a0f0cf..db6779d37 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Processor.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Processor.java @@ -54,6 +54,12 @@ public abstract class AbstractHttp11Processor { protected static boolean isSecurityEnabled = org.apache.coyote.Constants.IS_SECURITY_ENABLED; + /* + * Tracks how many internal filters are in the filter library so they + * are skipped when looking for pluggable filters. + */ + private int pluggableFilterIndex = Integer.MAX_VALUE; + /** * Associated adapter. */ @@ -764,7 +770,8 @@ public abstract class AbstractHttp11Processor { // Create and add the chunked filters. //getInputBuffer().addFilter(new GzipInputFilter()); getOutputBuffer().addFilter(new GzipOutputFilter()); - + + pluggableFilterIndex = getInputBuffer().getFilters().length; } @@ -807,7 +814,7 @@ public abstract class AbstractHttp11Processor { (inputFilters[Constants.CHUNKED_FILTER]); contentDelimitation = true; } else { - for (int i = 2; i < inputFilters.length; i++) { + for (int i = pluggableFilterIndex; i < inputFilters.length; i++) { if (inputFilters[i].getEncodingName() .toString().equals(encodingName)) { getInputBuffer().addActiveFilter(inputFilters[i]); diff --git a/java/org/apache/coyote/http11/filters/BufferedInputFilter.java b/java/org/apache/coyote/http11/filters/BufferedInputFilter.java index cb7ed665f..2b6c44c72 100644 --- a/java/org/apache/coyote/http11/filters/BufferedInputFilter.java +++ b/java/org/apache/coyote/http11/filters/BufferedInputFilter.java @@ -102,10 +102,12 @@ public class BufferedInputFilter implements InputFilter { } public void recycle() { - if (buffered.getBuffer().length > 65536) { - buffered = null; - } else { - buffered.recycle(); + if (buffered != null) { + if (buffered.getBuffer().length > 65536) { + buffered = null; + } else { + buffered.recycle(); + } } tempRead.recycle(); hasRead = false;