You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/08/06 21:08:07 UTC
svn commit: r1616309 -
/tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java
Author: markt
Date: Wed Aug 6 19:08:07 2014
New Revision: 1616309
URL: http://svn.apache.org/r1616309
Log:
Ensure unbind() is always called after calling bind()
Modified:
tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java?rev=1616309&r1=1616308&r2=1616309&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java Wed Aug 6 19:08:07 2014
@@ -127,57 +127,59 @@ final class StandardHostValve extends Va
// ensure an infinite error handling loop is not entered
boolean errorAtStart = response.isError();
- context.bind(Globals.IS_SECURITY_ENABLED, MY_CLASSLOADER);
+ try {
+ context.bind(Globals.IS_SECURITY_ENABLED, MY_CLASSLOADER);
- if (asyncAtStart || context.fireRequestInitEvent(request)) {
+ if (asyncAtStart || context.fireRequestInitEvent(request)) {
- // Ask this Context to process this request
- try {
- context.getPipeline().getFirst().invoke(request, response);
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- if (errorAtStart) {
- container.getLogger().error("Exception Processing " +
- request.getRequestURI(), t);
- } else {
- request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, t);
- throwable(request, response, t);
+ // Ask this Context to process this request
+ try {
+ context.getPipeline().getFirst().invoke(request, response);
+ } catch (Throwable t) {
+ ExceptionUtils.handleThrowable(t);
+ if (errorAtStart) {
+ container.getLogger().error("Exception Processing " +
+ request.getRequestURI(), t);
+ } else {
+ request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, t);
+ throwable(request, response, t);
+ }
}
- }
- Throwable t = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
+ Throwable t = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
- // If the request was async at the start and an error occurred then
- // the async error handling will kick-in and that will fire the
- // request destroyed event *after* the error handling has taken
- // place
- if (!(request.isAsync() || (asyncAtStart && t != null))) {
- // Protect against NPEs if context was destroyed during a
- // long running request.
- if (context.getState().isAvailable()) {
- if (!errorAtStart) {
- // Error page processing
- response.setSuspended(false);
-
- if (t != null) {
- throwable(request, response, t);
- } else {
- status(request, response);
+ // If the request was async at the start and an error occurred
+ // then the async error handling will kick-in and that will fire
+ // the request destroyed event *after* the error handling has
+ // taken place.
+ if (!(request.isAsync() || (asyncAtStart && t != null))) {
+ // Protect against NPEs if context was destroyed during a
+ // long running request.
+ if (context.getState().isAvailable()) {
+ if (!errorAtStart) {
+ // Error page processing
+ response.setSuspended(false);
+
+ if (t != null) {
+ throwable(request, response, t);
+ } else {
+ status(request, response);
+ }
}
- }
- context.fireRequestDestroyEvent(request);
+ context.fireRequestDestroyEvent(request);
+ }
}
}
- }
- // Access a session (if present) to update last accessed time, based on a
- // strict interpretation of the specification
- if (ACCESS_SESSION) {
- request.getSession(false);
+ // Access a session (if present) to update last accessed time, based
+ // on a strict interpretation of the specification
+ if (ACCESS_SESSION) {
+ request.getSession(false);
+ }
+ } finally {
+ context.unbind(Globals.IS_SECURITY_ENABLED, MY_CLASSLOADER);
}
-
- context.unbind(Globals.IS_SECURITY_ENABLED, MY_CLASSLOADER);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org