cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net AprEndpoint.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net AprEndpoint.java

Mladen Turk-3
mturk       2005/07/02 10:18:46

  Modified:    http11/src/java/org/apache/coyote/http11
                        Http11AprProcessor.java
               util/java/org/apache/tomcat/util/net AprEndpoint.java
  Log:
  Fix the Sendfile implementation.
  The APR sendfile always make it's internal full loop if the
  socket timeout is larger then 0. Setting soket timeout to
  zero also makes the socket nonblocking.
  I have added a keepAlive flag to the sendfile data because with
  sendfile the processing is done inside senfile poller.
 
  Revision  Changes    Path
  1.18      +6 -0      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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Http11AprProcessor.java 23 Jun 2005 11:47:32 -0000 1.17
  +++ Http11AprProcessor.java 2 Jul 2005 17:18:46 -0000 1.18
  @@ -884,9 +884,15 @@
               // Do sendfile as needed: add socket to sendfile and end
               if (sendfileData != null) {
                   sendfileData.socket = socket;
  +             sendfileData.keepAlive = keepAlive;
                   if (!endpoint.getSendfile().add(sendfileData)) {
                       keepAlive = false;
  +                    openSocket = false;
                   }
  +                else {
  +                 openSocket = true;
  +                }
  +                break;
               }
               
           }
 
 
 
  1.54      +19 -10    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.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- AprEndpoint.java 2 Jul 2005 10:55:34 -0000 1.53
  +++ AprEndpoint.java 2 Jul 2005 17:18:46 -0000 1.54
  @@ -1062,6 +1062,8 @@
           public long socket;
           // Position
           public long pos;
  +        // KeepAlive flag
  +        public boolean keepAlive;
       }
   
   
  @@ -1147,10 +1149,10 @@
                        0, data.fdpool);
                   data.pos = data.start;
                   // Set the socket to nonblocking mode
  -                Socket.optSet(data.socket, Socket.APR_SO_NONBLOCK, 1);
  +                Socket.timeoutSet(data.socket, 0);
                   while (true) {
                       long nw = Socket.sendfile(data.socket, data.fd, null, null,
  -                                             data.pos, data.end, 0);
  +                                              data.pos, data.end, 0);
                       if (nw < 0) {
                           if (!(-nw == Status.EAGAIN)) {
                            /* The socket will be destroyed on the
  @@ -1167,7 +1169,7 @@
                               // Entire file has been send
                               Pool.destroy(data.fdpool);
                               // Set back socket to blocking mode
  -                            Socket.optSet(data.socket, Socket.APR_SO_NONBLOCK, 0);
  +                            Socket.timeoutSet(data.socket, soTimeout * 1000);
                               return true;
                           }
                       }
  @@ -1182,7 +1184,7 @@
                   addS.add(data);
                   addS.notify();
               }
  -            return false;
  +            return true;
           }
   
           /**
  @@ -1260,7 +1262,6 @@
                                   // Close socket and clear pool
                                   remove(state);
                                   // Destroy file descriptor pool, which should close the file
  -                                Pool.destroy(state.fdpool);
                                   // Close the socket, as the reponse would be incomplete
                                   Socket.destroy(state.socket);
                                   continue;
  @@ -1281,11 +1282,19 @@
                               state.pos = state.pos + nw;
                               if (state.pos >= state.end) {
                                   remove(state);
  -                                // Destroy file descriptor pool, which should close the file
  -                                Pool.destroy(state.fdpool);
  -                                // If all done hand this socket off to a worker for
  -                                // processing of further requests
  -                                getWorkerThread().assign(desc[n*2+1]);
  +                                if (state.keepAlive) {
  +                                 // Destroy file descriptor pool, which should close the file
  +                                 Pool.destroy(state.fdpool);
  +                                 Socket.timeoutSet(state.socket, soTimeout * 1000);
  +                                 // If all done hand this socket off to a worker for
  +                                 // processing of further requests
  +                                 getWorkerThread().assign(state.socket);
  +                                }
  +                                else {
  +                                 // Close the socket since this is
  +                                 // the end of not keep-alive request.
  +                                 Socket.destroy(state.socket);
  +                                }
                               }
                           }
                       } else if (rv < 0) {
 
 
 

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net AprEndpoint.java

Natasha Hasmani
Thank-you for your e-mail.

Please note that i will be away from the office starting Wednesday June
29th, returning Thursday July 7th, with no access to email.  In my absence,
kindly contact Cheri Dueck at [hidden email]

Kind Regards,

Natasha Hasmani
Senior Event Manager



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]