From: remm Date: Fri, 30 Mar 2007 14:38:02 +0000 (+0000) Subject: - Adjustments to error processing with Comet during the begin event (exceptions not... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=d9e62b1f06a3aa7923629b04f4e4839be737f41d;p=tomcat7.0 - Adjustments to error processing with Comet during the begin event (exceptions not causing error reports). - Fix a probable bug when security was enabled (Comet would most likely not work). git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@524103 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 7054fc652..810b7554b 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -216,7 +216,7 @@ public class CoyoteAdapter connector.getContainer().getPipeline().getFirst().invoke(request, response); if (request.isComet()) { - if (!response.isClosed()) { + if (!response.isClosed() && !response.isError()) { comet = true; res.action(ActionCode.ACTION_COMET_BEGIN, null); } else { diff --git a/java/org/apache/catalina/core/ApplicationFilterFactory.java b/java/org/apache/catalina/core/ApplicationFilterFactory.java index c3cdd4f55..212a17327 100644 --- a/java/org/apache/catalina/core/ApplicationFilterFactory.java +++ b/java/org/apache/catalina/core/ApplicationFilterFactory.java @@ -121,16 +121,21 @@ public final class ApplicationFilterFactory { // Create and initialize a filter chain object ApplicationFilterChain filterChain = null; - if (!Globals.IS_SECURITY_ENABLED && (request instanceof Request)) { + if (request instanceof Request) { Request req = (Request) request; - filterChain = (ApplicationFilterChain) req.getFilterChain(); - if (filterChain == null) { + if (Globals.IS_SECURITY_ENABLED) { + // Security: Do not recycle filterChain = new ApplicationFilterChain(); - req.setFilterChain(filterChain); + } else { + filterChain = (ApplicationFilterChain) req.getFilterChain(); + if (filterChain == null) { + filterChain = new ApplicationFilterChain(); + req.setFilterChain(filterChain); + } } comet = req.isComet(); } else { - // Security: Do not recycle + // Request dispatcher in use filterChain = new ApplicationFilterChain(); } diff --git a/java/org/apache/catalina/core/StandardWrapperValve.java b/java/org/apache/catalina/core/StandardWrapperValve.java index 887b1e6f0..c992de0d8 100644 --- a/java/org/apache/catalina/core/StandardWrapperValve.java +++ b/java/org/apache/catalina/core/StandardWrapperValve.java @@ -159,9 +159,10 @@ final class StandardWrapperValve } // Identify if the request is Comet related now that the servlet has been allocated + boolean comet = false; if (servlet instanceof CometProcessor && request.getAttribute("org.apache.tomcat.comet.support") == Boolean.TRUE) { - request.setComet(true); + comet = true; } // Acknowlege the request @@ -209,8 +210,9 @@ final class StandardWrapperValve if (context.getSwallowOutput()) { try { SystemLogHandler.startCapture(); - if (request.isComet()) { + if (comet) { filterChain.doFilterEvent(request.getEvent()); + request.setComet(true); } else { filterChain.doFilter(request.getRequest(), response.getResponse()); @@ -222,8 +224,9 @@ final class StandardWrapperValve } } } else { - if (request.isComet()) { + if (comet) { filterChain.doFilterEvent(request.getEvent()); + request.setComet(true); } else { filterChain.doFilter (request.getRequest(), response.getResponse());