You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2008/03/17 08:11:02 UTC

svn commit: r637754 - /mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java

Author: trustin
Date: Mon Mar 17 00:10:46 2008
New Revision: 637754

URL: http://svn.apache.org/viewvc?rev=637754&view=rev
Log:
Fixed failing NioFileRegionTest

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java?rev=637754&r1=637753&r2=637754&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoProcessor.java Mon Mar 17 00:10:46 2008
@@ -537,6 +537,15 @@
                     localWrittenBytes = writeFile(
                             session, req, hasFragmentation,
                             maxWrittenBytes - writtenBytes);
+                    
+                    // Fix for Java bug on Linux http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5103988
+                    // If there's still data to be written in the FileRegion, return 0 indicating that we need
+                    // to pause until writing may resume.
+                    if (localWrittenBytes > 0 && ((FileRegion) message).getRemainingBytes() > 0) {
+                        writtenBytes += localWrittenBytes;
+                        setInterestedInWrite(session, true);
+                        return false;
+                    }
                 } else {
                     throw new IllegalStateException("Don't know how to handle message of type '" + message.getClass().getName() + "'.  Are you missing a protocol encoder?");
                 }
@@ -600,13 +609,6 @@
             }
             localWrittenBytes = transferFile(session, region, length);
             region.update(localWrittenBytes);
-            
-            // Fix for Java bug on Linux http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5103988
-            // If there's still data to be written in the FileRegion, return 0 indicating that we need
-            // to pause until writing may resume.
-            if (localWrittenBytes > 0 && region.getRemainingBytes() > 0) {
-                return 0;
-            }
         } else {
             localWrittenBytes = 0;
         }