- If an exception is thrown processing an event which was not an error, the contract...
authorremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 2 Apr 2007 16:51:29 +0000 (16:51 +0000)
committerremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 2 Apr 2007 16:51:29 +0000 (16:51 +0000)
  should be called.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@524836 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/connector/CoyoteAdapter.java

index 810b755..cb15d7f 100644 (file)
@@ -141,6 +141,14 @@ public class CoyoteAdapter
                 // Calling the container
                 connector.getContainer().getPipeline().getFirst().event(request, response, request.getEvent());
 
+                if (!error && !response.isClosed() && (request.getAttribute(Globals.EXCEPTION_ATTR) != null)) {
+                    // An unexpected exception occurred while processing the event, so
+                    // error should be called
+                    request.getEvent().setEventType(CometEvent.EventType.ERROR);
+                    request.getEvent().setEventSubType(null);
+                    error = true;
+                    connector.getContainer().getPipeline().getFirst().event(request, response, request.getEvent());
+                }
                 if (response.isClosed() || !request.isComet()) {
                     res.action(ActionCode.ACTION_COMET_END, null);
                 }