Author: fhanik
Date: Wed Jul 16 17:13:37 2008
New Revision: 677473

URL: http://svn.apache.org/viewvc?rev=677473&view=rev
Log:
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


Modified:
    tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
    tomcat/trunk/java/org/apache/catalina/connector/Request.java

Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=677473&r1=677472&r2=677473&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Wed Jul 
16 17:13:37 2008
@@ -206,6 +206,13 @@
                     
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 @@
 
                 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;

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=677473&r1=677472&r2=677473&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Wed Jul 16 
17:13:37 2008
@@ -2248,6 +2248,12 @@
         this.comet = comet;
     }
 
+    /**
+     * return true if we have parsed parameters
+     */
+    public boolean isParametersParsed() {
+        return parametersParsed;
+    }    
     
     /**
      * Return true if bytes are available.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to