From: markt Date: Tue, 25 Jan 2011 17:12:22 +0000 (+0000) Subject: Prevent multiple Comet END events X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=d326c546b80acb89cbb0e325f3215cc1d8d2f26d;p=tomcat7.0 Prevent multiple Comet END events git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1063362 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 50580f34c..59f8c457d 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -28,6 +28,7 @@ import javax.servlet.SessionTrackingMode; import org.apache.catalina.Context; import org.apache.catalina.Wrapper; import org.apache.catalina.comet.CometEvent; +import org.apache.catalina.comet.CometEvent.EventType; import org.apache.catalina.core.ApplicationSessionCookieConfig; import org.apache.catalina.core.AsyncContextImpl; import org.apache.catalina.util.ServerInfo; @@ -217,8 +218,9 @@ public class CoyoteAdapter implements Adapter { connector.getService().getContainer().getPipeline().getFirst().event(request, response, request.getEvent()); } if (response.isClosed() || !request.isComet()) { - if (status==SocketStatus.OPEN) { - //CometEvent.close was called during an event. + if (status==SocketStatus.OPEN && + request.getEvent().getEventType() != EventType.END) { + //CometEvent.close was called during an event other than END request.getEvent().setEventType(CometEvent.EventType.END); request.getEvent().setEventSubType(null); error = true; diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 4f5795cc6..d72c9e90b 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -198,6 +198,10 @@ for explicit additional arguments for the executable. Those were broken when implementing fix for bug 49657. (kkolinko) + + Prvent multiple Comet END events if the CometServlet calls + event.close() during an END event. (markt) +