Author: markt Date: Tue Sep 4 18:53:49 2007 New Revision: 572854 URL: http://svn.apache.org/viewvc?rev=572854&view=rev Log: An alternative fix for 30949 that does not require additional try/catch/finally blocks Also remove unnecessary unwrapping now that unwrapRequest() and unwrapResponse() are called in invoke()
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java tomcat/container/tc5.5.x/webapps/docs/changelog.xml Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java?rev=572854&r1=572853&r2=572854&view=diff ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java Tue Sep 4 18:53:49 2007 @@ -362,10 +362,6 @@ wrequest.setQueryString(hrequest.getQueryString()); processRequest(request,response,state); - - wrequest.recycle(); - unwrapRequest(state); - } // Handle an HTTP path-based forward @@ -401,10 +397,6 @@ } processRequest(request,response,state); - - wrequest.recycle(); - unwrapRequest(state); - } // This is not a real close in order to support error processing @@ -554,8 +546,6 @@ ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, servletPath); invoke(state.outerRequest, state.outerResponse, state); - - wrequest.recycle(); } // Handle an HTTP path based include @@ -592,8 +582,6 @@ ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR, servletPath); invoke(state.outerRequest, state.outerResponse, state); - - wrequest.recycle(); } } @@ -768,6 +756,8 @@ // See Bugzilla 30949 unwrapRequest(state); unwrapResponse(state); + // Recycle request if necessary (also BZ 30949) + recycleRequestWrapper(state); // Rethrow an exception if one was thrown by the invoked servlet if (ioException != null) @@ -1024,6 +1014,12 @@ if (!same) { throw new ServletException(sm.getString( "applicationDispatcher.specViolation.response")); + } + } + + private void recycleRequestWrapper(State state) { + if (state.wrapRequest instanceof ApplicationHttpRequest) { + ((ApplicationHttpRequest) state.wrapRequest).recycle(); } } } Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=572854&r1=572853&r2=572854&view=diff ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Tue Sep 4 18:53:49 2007 @@ -34,6 +34,10 @@ <subsection name="Catalina"> <changelog> <fix> + <bug>30949</bug>: Improve previous fix. Ensure requests are re-cycled + on cross-context includes and forwards when an exception occurs in the + target page. (markt) + <fix> <bug>43216</bug>: Set correct StandardSession#accessCount as system property STRICT_SERVLET_COMPLIANCE is true after application restart with SESSION.ser file. Patch provided by Takayuki Kaneko (pero) </fix> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]