From: remm Date: Tue, 3 Apr 2007 14:13:33 +0000 (+0000) Subject: - It should be possible for the event object to be closed asynchronously. In that... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=bdcfc5c94a7e3a4f50d7785fee84fbf4e7c6bb68;p=tomcat7.0 - It should be possible for the event object to be closed asynchronously. In that case, I think an END event should be sent to cleanup the pipeline. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@525160 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index cb15d7fd3..9a7dd7005 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -120,8 +120,15 @@ public class CoyoteAdapter boolean error = false; try { if (status == SocketStatus.OPEN) { - request.getEvent().setEventType(CometEvent.EventType.READ); - request.getEvent().setEventSubType(null); + if (response.isClosed()) { + // The event has been closed asynchronously, so call end instead of + // read to cleanup the pipeline + request.getEvent().setEventType(CometEvent.EventType.END); + request.getEvent().setEventSubType(null); + } else { + request.getEvent().setEventType(CometEvent.EventType.READ); + request.getEvent().setEventSubType(null); + } } else if (status == SocketStatus.DISCONNECT) { request.getEvent().setEventType(CometEvent.EventType.ERROR); request.getEvent().setEventSubType(CometEvent.EventSubType.CLIENT_DISCONNECT); @@ -134,8 +141,15 @@ public class CoyoteAdapter request.getEvent().setEventType(CometEvent.EventType.END); request.getEvent().setEventSubType(CometEvent.EventSubType.SERVER_SHUTDOWN); } else if (status == SocketStatus.TIMEOUT) { - request.getEvent().setEventType(CometEvent.EventType.ERROR); - request.getEvent().setEventSubType(CometEvent.EventSubType.TIMEOUT); + if (response.isClosed()) { + // The event has been closed asynchronously, so call end instead of + // read to cleanup the pipeline + request.getEvent().setEventType(CometEvent.EventType.END); + request.getEvent().setEventSubType(null); + } else { + request.getEvent().setEventType(CometEvent.EventType.ERROR); + request.getEvent().setEventSubType(CometEvent.EventSubType.TIMEOUT); + } } // Calling the container