Author: musachy
Date: Wed Aug 12 17:33:44 2009
New Revision: 803625
URL: http://svn.apache.org/viewvc?rev=803625&view=rev
Log:
WW-3077 StrutsPrepareAndExecuteFilter: infinite loop in filter chain with
dispatcher FORWARD
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java?rev=803625&r1=803624&r2=803625&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ng/filter/StrutsExecuteFilter.java
Wed Aug 12 17:33:44 2009
@@ -74,7 +74,12 @@
}
ActionMapping mapping = prepare.findActionMapping(request, response);
- if (mapping == null) {
+
+ //if recusrion counter is > 1, it means we are in a "forward", in that
case a mapping will still be
+ //in the request, if we handle it, it will lead to an infinte loop,
see WW-3077
+ Integer recursionCounter = (Integer)
request.getAttribute(PrepareOperations.CLEANUP_RECURSION_COUNTER);
+
+ if (mapping == null || recursionCounter > 1) {
boolean handled = execute.executeStaticResourceRequest(request,
response);
if (!handled) {
chain.doFilter(request, response);