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:03:26 UTC

svn commit: r1654326 - in /tomcat/trunk/java/org/apache/tomcat/util/net: NioEndpoint.java SocketWrapperBase.java

Author: markt
Date: Fri Jan 23 19:03:26 2015
New Revision: 1654326

URL: http://svn.apache.org/r1654326
Log:
Clarify expected behaviour if the sendfile doesn't complete in-line and
fix and associated bug in the NIO refactoring.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
    tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1654326&r1=1654325&r2=1654326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Fri Jan 23 19:03:26 2015
@@ -1196,15 +1196,13 @@ public class NioEndpoint extends Abstrac
                     }
                     return SendfileState.DONE;
                 } else {
-                    if (!calledByProcessor) {
-                        if (log.isDebugEnabled()) {
-                            log.debug("OP_WRITE for sendfile: " + sd.fileName);
-                        }
-                        if (event) {
-                            add(socketWrapper.getSocket(),SelectionKey.OP_WRITE);
-                        } else {
-                            reg(sk,socketWrapper,SelectionKey.OP_WRITE);
-                        }
+                    if (log.isDebugEnabled()) {
+                        log.debug("OP_WRITE for sendfile: " + sd.fileName);
+                    }
+                    if (event) {
+                        add(socketWrapper.getSocket(),SelectionKey.OP_WRITE);
+                    } else {
+                        reg(sk,socketWrapper,SelectionKey.OP_WRITE);
                     }
                     return SendfileState.PENDING;
                 }

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1654326&r1=1654325&r2=1654326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Fri Jan 23 19:03:26 2015
@@ -511,6 +511,16 @@ public abstract class SocketWrapperBase<
 
     public abstract void regsiterForEvent(boolean read, boolean write);
 
+    /**
+     * Starts the sendfile process. It is expected that if the sendfile process
+     * does not complete during this call that the caller <b>will not</b> add
+     * the socket to the poller (or equivalent). That is the responsibility of
+     * this method.
+     *
+     * @param sendfileData Data representing the file to send
+     *
+     * @return The state of the sendfile process after the first write.
+     */
     public abstract SendfileState processSendfile(SendfileDataBase sendfileData);
 
 



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