remm        2005/04/23 10:33:40

  Modified:    util/java/org/apache/tomcat/util/net AprEndpoint.java
               http11/src/java/org/apache/coyote/http11
                        Http11AprProcessor.java
  Log:
  - Fix keepalive for sendfile.
  
  Revision  Changes    Path
  1.17      +9 -7      
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/AprEndpoint.java
  
  Index: AprEndpoint.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/AprEndpoint.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- AprEndpoint.java  23 Apr 2005 17:05:31 -0000      1.16
  +++ AprEndpoint.java  23 Apr 2005 17:33:40 -0000      1.17
  @@ -1052,7 +1052,7 @@
               Pool.destroy(pool);
           }
   
  -        public void add(long socket, SendfileData data) {
  +        public boolean add(long socket, SendfileData data) {
               // Initialize fd from data given
               try {
                   data.fdpool = Pool.create(data.pool);
  @@ -1069,26 +1069,27 @@
                       if (nw < 0) {
                           if (!Status.APR_STATUS_IS_EAGAIN(-nw)) {
                               Poll.destroy(data.pool);
  -                            return;
  +                            return false;
                           }
                           else {
                               // Break the loop and add the socket to poller.
                               break;    
                           }
  -                    }
  -                    else {
  +                    } else {
                           data.pos = data.pos + nw;
                           if (data.pos >= data.end) {
                               // Entire file has been send
  -                            Poll.destroy(data.pool);
  -                            return;
  +                            Poll.destroy(data.fdpool);
  +                            // Set back socket to blocking mode
  +                            Socket.optSet(socket, Socket.APR_SO_NONBLOCK, 0);
  +                            return true;
                           }
                       }
                   }
               } catch (Error e) {
                   // FIXME: more appropriate logging
                   e.printStackTrace();
  -                return;
  +                return false;
               }
               synchronized (this) {
                   // Add socket to the poller
  @@ -1103,6 +1104,7 @@
                       Pool.destroy(data.pool);
                   }
               }
  +            return false;
           }
   
           public void remove(long socket) {
  
  
  
  1.9       +3 -2      
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
  
  Index: Http11AprProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Http11AprProcessor.java   20 Apr 2005 16:13:23 -0000      1.8
  +++ Http11AprProcessor.java   23 Apr 2005 17:33:40 -0000      1.9
  @@ -872,9 +872,10 @@
   
               // Do sendfile as needed: add socket to sendfile and end
               if (sendfileData != null) {
  -                keepAlive = false;
                   sendfileData.pool = pool;
  -                endpoint.getSendfile().add(socket, sendfileData);
  +                if (!endpoint.getSendfile().add(socket, sendfileData)) {
  +                    keepAlive = false;
  +                }
               }
               
           }
  
  
  

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

Reply via email to