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);


Reply via email to