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