Author: remm Date: Thu Aug 17 04:41:43 2006 New Revision: 432214 URL: http://svn.apache.org/viewvc?rev=432214&view=rev Log: - Update to use two action code. - The attribute to advertise comet support remains for now. - No update to the comet interface at this time.
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=432214&r1=432213&r2=432214&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Thu Aug 17 04:41:43 2006 @@ -128,7 +128,8 @@ servlet = (CometProcessor) request.getWrapper().allocate(); } catch (Throwable t) { log.error(sm.getString("coyoteAdapter.service"), t); - request.removeAttribute("org.apache.tomcat.comet"); + request.recycle(); + response.recycle(); // Restore the context classloader Thread.currentThread().setContextClassLoader (CoyoteAdapter.class.getClassLoader()); @@ -140,7 +141,6 @@ } else { if (!servlet.read(request.getRequest(), response.getResponse())) { error = true; - request.removeAttribute("org.apache.tomcat.comet"); try { servlet.error(request.getRequest(), response.getResponse()); } catch (Throwable th) { @@ -148,12 +148,15 @@ } } } + if (response.isClosed()) { + res.action(ActionCode.ACTION_COMET_END, null); + } return (!error); } catch (Throwable t) { if (!(t instanceof IOException)) { log.error(sm.getString("coyoteAdapter.service"), t); } - request.removeAttribute("org.apache.tomcat.comet"); + error = true; try { servlet.error(request.getRequest(), response.getResponse()); } catch (Throwable th) { @@ -161,14 +164,14 @@ } return false; } finally { + // Restore the context classloader + Thread.currentThread().setContextClassLoader + (CoyoteAdapter.class.getClassLoader()); // Recycle the wrapper request and response - if (request.getAttribute("org.apache.tomcat.comet") == null) { + if (error || response.isClosed()) { request.recycle(); response.recycle(); } - // Restore the context classloader - Thread.currentThread().setContextClassLoader - (CoyoteAdapter.class.getClassLoader()); } } return true; @@ -222,14 +225,15 @@ connector.getContainer().getPipeline().getFirst().invoke(request, response); } - if (request.getAttribute("org.apache.tomcat.comet") == Boolean.TRUE - && request.getWrapper().allocate() instanceof CometProcessor) { + if (request.getWrapper().allocate() instanceof CometProcessor + && !response.isClosed()) { comet = true; + res.action(ActionCode.ACTION_COMET_BEGIN, null); } if (!comet) { response.finishResponse(); - req.action( ActionCode.ACTION_POST_REQUEST , null); + req.action(ActionCode.ACTION_POST_REQUEST , null); } } catch (IOException e) { Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java?rev=432214&r1=432213&r2=432214&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java Thu Aug 17 04:41:43 2006 @@ -133,6 +133,18 @@ public static final ActionCode ACTION_REQ_SET_BODY_REPLAY = new ActionCode(20); + /** + * Callback for begin Comet processing + */ + public static final ActionCode ACTION_COMET_BEGIN = new ActionCode(21); + + + /** + * Callback for begin Comet processing + */ + public static final ActionCode ACTION_COMET_END = new ActionCode(22); + + // ----------------------------------------------------------- Constructors int code; Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=432214&r1=432213&r2=432214&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Aug 17 04:41:43 2006 @@ -744,9 +744,6 @@ try { rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE); error = !adapter.event(request, response, error); - if (request.getAttribute("org.apache.tomcat.comet") == null) { - comet = false; - } } catch (InterruptedIOException e) { error = true; } catch (Throwable t) { @@ -875,10 +872,6 @@ error = response.getErrorException() != null || statusDropsConnection(response.getStatus()); } - // Comet support - if (request.getAttribute("org.apache.tomcat.comet") != null) { - comet = true; - } } catch (InterruptedIOException e) { error = true; } catch (Throwable t) { @@ -1217,6 +1210,11 @@ InternalAprInputBuffer internalBuffer = (InternalAprInputBuffer) request.getInputBuffer(); internalBuffer.addActiveFilter(savedBody); + + } else if (actionCode == ActionCode.ACTION_COMET_BEGIN) { + comet = true; + } else if (actionCode == ActionCode.ACTION_COMET_END) { + comet = false; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]