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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org