AbstractIoSession.increaseWrittenBytesAndMessages does not update writtenBytes 
for FileRegion
---------------------------------------------------------------------------------------------

                 Key: DIRMINA-525
                 URL: https://issues.apache.org/jira/browse/DIRMINA-525
             Project: MINA
          Issue Type: Bug
          Components: Core
         Environment: jdk1.6.0_03 Linux x64
            Reporter: Geoff Cadien
             Fix For: 2.0.0-M1


AbstractIoSession.increaseWrittenBytesAndMessages only updates writtenMessages 
and not writtenBytes for a FileRegion.  
Below is a patch that fixes the problem but I'm not sure if it is correct.  
When the WriteRequest contains an IoBuffer a check is made to see if the 
IoBuffer has any remaining bytes and only updates writtenBytes if it does.  
I've never seen this method called when only part of a FileRegion is sent and 
I'm sure how it could be because it seems that increaseWrittenBytesAndMessages 
is only called from fireMessageSent.

Index: AbstractIoSession.java
===================================================================
--- AbstractIoSession.java      (revision 616815)
+++ AbstractIoSession.java      (working copy)
@@ -541,6 +541,12 @@
             } else {
                 increaseWrittenMessages(currentTime);
             }
+        } else if (message instanceof FileRegion) {
+            FileRegion region = (FileRegion) message;
+            if (region.getCount() == 0) {
+                increaseWrittenBytes(region.getWrittenBytes(), currentTime);
+                increaseWrittenMessages(currentTime);
+            } 
         } else {
             increaseWrittenMessages(currentTime);
         }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to