Author: jfclere Date: Tue Jun 29 14:07:23 2010 New Revision: 958977 URL: http://svn.apache.org/viewvc?rev=958977&view=rev Log: Arrange filter logic. Back port of r958911.
Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=958977&r1=958976&r2=958977&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Tue Jun 29 14:07:23 2010 @@ -78,6 +78,12 @@ public class Http11AprProcessor implemen protected static StringManager sm = StringManager.getManager(Constants.Package); + /* + * 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; + // ----------------------------------------------------------- Constructors @@ -1742,6 +1748,8 @@ public class Http11AprProcessor implemen //inputBuffer.addFilter(new GzipInputFilter()); outputBuffer.addFilter(new GzipOutputFilter()); + pluggableFilterIndex = inputBuffer.filterLibrary.length; + } @@ -1760,7 +1768,7 @@ public class Http11AprProcessor implemen (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)) { inputBuffer.addActiveFilter(inputFilters[i]); Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=958977&r1=958976&r2=958977&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue Jun 29 14:07:23 2010 @@ -81,6 +81,13 @@ public class Http11NioProcessor implemen */ protected SSLSupport sslSupport; + /* + * 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; + + // ----------------------------------------------------------- Constructors @@ -1769,6 +1776,8 @@ public class Http11NioProcessor implemen //inputBuffer.addFilter(new GzipInputFilter()); outputBuffer.addFilter(new GzipOutputFilter()); + pluggableFilterIndex = inputBuffer.filterLibrary.length; + } @@ -1787,7 +1796,7 @@ public class Http11NioProcessor implemen (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)) { inputBuffer.addActiveFilter(inputFilters[i]); Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=958977&r1=958976&r2=958977&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java Tue Jun 29 14:07:23 2010 @@ -74,6 +74,13 @@ public class Http11Processor implements 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; + + // ------------------------------------------------------------ Constructor @@ -1638,6 +1645,8 @@ public class Http11Processor implements //inputBuffer.addFilter(new GzipInputFilter()); outputBuffer.addFilter(new GzipOutputFilter()); + pluggableFilterIndex = inputBuffer.filterLibrary.length; + } @@ -1656,7 +1665,7 @@ public class Http11Processor implements (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)) { inputBuffer.addActiveFilter(inputFilters[i]); Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java?rev=958977&r1=958976&r2=958977&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java Tue Jun 29 14:07:23 2010 @@ -102,10 +102,12 @@ public class BufferedInputFilter impleme } 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; Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=958977&r1=958976&r2=958977&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Tue Jun 29 14:07:23 2010 @@ -42,6 +42,8 @@ <section name="Tomcat 6.0.28 (jfclere)"> <subsection name="Catalina"> <changelog> + <fix>Arrange filter logic. (jfclere) + </fix> <fix> <bug>49230</bug>: Enhance JRE leak prevention listener with protection for the keep-alive thread started by --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org