You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/01/23 20:02:51 UTC

svn commit: r1654319 - in /tomcat/trunk/java/org/apache: coyote/http11/Http11AprProcessor.java tomcat/util/net/AprEndpoint.java

Author: markt
Date: Fri Jan 23 19:02:50 2015
New Revision: 1654319

URL: http://svn.apache.org/r1654319
Log:
Refactor APR to use SendfileData.length rather than SendfileData.end to
slign with NIO and NIO2.

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
    tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1654319&r1=1654318&r2=1654319&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Fri Jan 23 19:02:50 2015
@@ -377,8 +377,8 @@ public class Http11AprProcessor extends
             sendfileData.fileName = fileName;
             sendfileData.pos = ((Long) request.getAttribute(
                     org.apache.coyote.Constants.SENDFILE_FILE_START_ATTR)).longValue();
-            sendfileData.end = ((Long) request.getAttribute(
-                    org.apache.coyote.Constants.SENDFILE_FILE_END_ATTR)).longValue();
+            sendfileData.length = ((Long) request.getAttribute(
+                    org.apache.coyote.Constants.SENDFILE_FILE_END_ATTR)).longValue() - sendfileData.pos;
             return true;
         }
         return false;

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1654319&r1=1654318&r2=1654319&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Fri Jan 23 19:02:50 2015
@@ -1922,7 +1922,7 @@ public class AprEndpoint extends Abstrac
         public long fd;
         public long fdpool;
         // Range information
-        public long end;
+        public long length;
         // Socket and socket pool
         public long socket;
     }
@@ -2024,7 +2024,7 @@ public class AprEndpoint extends Abstrac
                 Socket.timeoutSet(data.socket, 0);
                 while (true) {
                     long nw = Socket.sendfilen(data.socket, data.fd,
-                                               data.pos, data.end - data.pos, 0);
+                                               data.pos, data.length, 0);
                     if (nw < 0) {
                         if (!(-nw == Status.EAGAIN)) {
                             Pool.destroy(data.fdpool);
@@ -2035,8 +2035,9 @@ public class AprEndpoint extends Abstrac
                             break;
                         }
                     } else {
-                        data.pos = data.pos + nw;
-                        if (data.pos >= data.end) {
+                        data.pos += nw;
+                        data.length -= nw;
+                        if (data.length == 0) {
                             // Entire file has been sent
                             Pool.destroy(data.fdpool);
                             // Set back socket to blocking mode
@@ -2153,7 +2154,7 @@ public class AprEndpoint extends Abstrac
                             // Write some data using sendfile
                             long nw = Socket.sendfilen(state.socket, state.fd,
                                                        state.pos,
-                                                       state.end - state.pos, 0);
+                                                       state.length, 0);
                             if (nw < 0) {
                                 // Close socket and clear pool
                                 remove(state);
@@ -2163,8 +2164,9 @@ public class AprEndpoint extends Abstrac
                                 continue;
                             }
 
-                            state.pos = state.pos + nw;
-                            if (state.pos >= state.end) {
+                            state.pos += nw;
+                            state.length -= nw;
+                            if (state.length == 0) {
                                 remove(state);
                                 if (state.keepAlive) {
                                     // Destroy file descriptor pool, which should close the file



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org