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;
}