From c6e8da3d57d8c28a0eb91ce06302e967c94a7c6c Mon Sep 17 00:00:00 2001 From: fhanik Date: Thu, 17 Jul 2008 00:13:37 +0000 Subject: [PATCH] first chunk - make sure END gets called properly, if the event was closed second chunk - if the POST body is x-www-form-urlencoded, request.getAvailable() returns 0 for IdentityInputFilter so we still need to invoke READ event if there is a body, and it hasn't been processes by the servlet git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@677473 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/connector/CoyoteAdapter.java | 9 ++++++++- java/org/apache/catalina/connector/Request.java | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index b06c5fbd3..f29564e30 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -206,6 +206,13 @@ public class CoyoteAdapter connector.getContainer().getPipeline().getFirst().event(request, response, request.getEvent()); } if (response.isClosed() || !request.isComet()) { + if (status==SocketStatus.OPEN) { + //CometEvent.close was called during an event. + request.getEvent().setEventType(CometEvent.EventType.END); + request.getEvent().setEventSubType(null); + error = true; + connector.getContainer().getPipeline().getFirst().event(request, response, request.getEvent()); + } res.action(ActionCode.ACTION_COMET_END, null); } else if (!error && read && request.getAvailable()) { // If this was a read and not all bytes have been read, or if no data @@ -287,7 +294,7 @@ public class CoyoteAdapter if (request.isComet()) { if (!response.isClosed() && !response.isError()) { - if (request.getAvailable()) { + if (request.getAvailable() || (request.getContentLength() > 0 && (!request.isParametersParsed()))) { // Invoke a read event right away if there are available bytes if (event(req, res, SocketStatus.OPEN)) { comet = true; diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java index 2b3ed3f1b..b53d646b9 100644 --- a/java/org/apache/catalina/connector/Request.java +++ b/java/org/apache/catalina/connector/Request.java @@ -2248,6 +2248,12 @@ public class Request this.comet = comet; } + /** + * return true if we have parsed parameters + */ + public boolean isParametersParsed() { + return parametersParsed; + } /** * Return true if bytes are available. -- 2.11.0