Author: kkolinko Date: Sat Nov 12 08:22:23 2011 New Revision: 1201224 URL: http://svn.apache.org/viewvc?rev=1201224&view=rev Log: svn:eol-style=native
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/filters/FailedRequestFilter.java (contents, props changed) Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/filters/FailedRequestFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/filters/FailedRequestFilter.java?rev=1201224&r1=1201223&r2=1201224&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/filters/FailedRequestFilter.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/filters/FailedRequestFilter.java Sat Nov 12 08:22:23 2011 @@ -1,92 +1,92 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.catalina.filters; - -import java.io.IOException; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; - -import org.apache.catalina.Globals; -import org.apache.catalina.CometEvent; -import org.apache.catalina.CometFilter; -import org.apache.catalina.CometFilterChain; -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -/** - * Filter that will reject requests if there was a failure during parameter - * parsing. This filter can be used to ensure that none parameter values - * submitted by client are lost. - * - * <p> - * Note that it has side effect that it triggers parameter parsing and thus - * consumes the body for POST requests. Parameter parsing does check content - * type of the request, so there should not be problems with addresses that use - * <code>request.getInputStream()</code> and <code>request.getReader()</code>, - * if requests parsed by them do not use standard value for content mime-type. - */ -public class FailedRequestFilter extends FilterBase implements CometFilter { - - private static final Log log = LogFactory.getLog(FailedRequestFilter.class); - - @Override - protected Log getLogger() { - return log; - } - - public void doFilter(ServletRequest request, ServletResponse response, - FilterChain chain) throws IOException, ServletException { - if (!isGoodRequest(request)) { - ((HttpServletResponse) response) - .sendError(HttpServletResponse.SC_BAD_REQUEST); - return; - } - chain.doFilter(request, response); - } - - public void doFilterEvent(CometEvent event, CometFilterChain chain) - throws IOException, ServletException { - if (event.getEventType() == CometEvent.EventType.BEGIN - && !isGoodRequest(event.getHttpServletRequest())) { - event.getHttpServletResponse().sendError( - HttpServletResponse.SC_BAD_REQUEST); - event.close(); - return; - } - chain.doFilterEvent(event); - } - - private boolean isGoodRequest(ServletRequest request) { - // Trigger parsing of parameters - request.getParameter("none"); - // Detect failure - if (request.getAttribute(Globals.PARAMETER_PARSE_FAILED_ATTR) != null) { - return false; - } - return true; - } - - @Override - protected boolean isConfigProblemFatal() { - return true; - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.catalina.filters; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; + +import org.apache.catalina.Globals; +import org.apache.catalina.CometEvent; +import org.apache.catalina.CometFilter; +import org.apache.catalina.CometFilterChain; +import org.apache.juli.logging.Log; +import org.apache.juli.logging.LogFactory; + +/** + * Filter that will reject requests if there was a failure during parameter + * parsing. This filter can be used to ensure that none parameter values + * submitted by client are lost. + * + * <p> + * Note that it has side effect that it triggers parameter parsing and thus + * consumes the body for POST requests. Parameter parsing does check content + * type of the request, so there should not be problems with addresses that use + * <code>request.getInputStream()</code> and <code>request.getReader()</code>, + * if requests parsed by them do not use standard value for content mime-type. + */ +public class FailedRequestFilter extends FilterBase implements CometFilter { + + private static final Log log = LogFactory.getLog(FailedRequestFilter.class); + + @Override + protected Log getLogger() { + return log; + } + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + if (!isGoodRequest(request)) { + ((HttpServletResponse) response) + .sendError(HttpServletResponse.SC_BAD_REQUEST); + return; + } + chain.doFilter(request, response); + } + + public void doFilterEvent(CometEvent event, CometFilterChain chain) + throws IOException, ServletException { + if (event.getEventType() == CometEvent.EventType.BEGIN + && !isGoodRequest(event.getHttpServletRequest())) { + event.getHttpServletResponse().sendError( + HttpServletResponse.SC_BAD_REQUEST); + event.close(); + return; + } + chain.doFilterEvent(event); + } + + private boolean isGoodRequest(ServletRequest request) { + // Trigger parsing of parameters + request.getParameter("none"); + // Detect failure + if (request.getAttribute(Globals.PARAMETER_PARSE_FAILED_ATTR) != null) { + return false; + } + return true; + } + + @Override + protected boolean isConfigProblemFatal() { + return true; + } + +} Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/filters/FailedRequestFilter.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org