You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by je...@apache.org on 2013/11/27 13:26:06 UTC
[3/8] git commit: Applied the patch proposed by Jon (DIRMINA-929)
Applied the patch proposed by Jon (DIRMINA-929)
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/f42feedc
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/f42feedc
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/f42feedc
Branch: refs/heads/2.0
Commit: f42feedcdaf8922df788fa5bde62e363cbc10c41
Parents: f72467a
Author: Emmanuel Lécharny <el...@apache.org>
Authored: Fri Jan 11 18:02:59 2013 +0100
Committer: Jeff MAURY <je...@apache.org>
Committed: Wed Nov 27 13:23:03 2013 +0100
----------------------------------------------------------------------
.../mina/core/polling/AbstractPollingIoProcessor.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/f42feedc/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
index 0924f18..5268434 100644
--- a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
+++ b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
@@ -846,6 +846,7 @@ public abstract class AbstractPollingIoProcessor<S extends AbstractIoSession> im
if ((localWrittenBytes > 0) && ((IoBuffer) message).hasRemaining()) {
// the buffer isn't empty, we re-interest it in writing
+ writtenBytes += localWrittenBytes;
setInterestedInWrite(session, true);
return false;
}
@@ -859,6 +860,7 @@ public abstract class AbstractPollingIoProcessor<S extends AbstractIoSession> im
// 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;
}
@@ -880,6 +882,10 @@ public abstract class AbstractPollingIoProcessor<S extends AbstractIoSession> im
scheduleFlush(session);
return false;
}
+
+ if (message instanceof IoBuffer) {
+ ((IoBuffer) message).free();
+ }
} while (writtenBytes < maxWrittenBytes);
} catch (Exception e) {
if (req != null) {
@@ -913,7 +919,9 @@ public abstract class AbstractPollingIoProcessor<S extends AbstractIoSession> im
} catch (IOException ioe) {
// We have had an issue while trying to send data to the
// peer : let's close the session.
+ buf.free();
session.close(true);
+ return 0;
}
}
@@ -925,8 +933,6 @@ public abstract class AbstractPollingIoProcessor<S extends AbstractIoSession> im
int pos = buf.position();
buf.reset();
- session.increaseScheduledWriteMessages();
-
fireMessageSent(session, req);
// And set it back to its position