You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2009/02/13 09:09:11 UTC
svn commit: r744025 -
/mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java
Author: elecharny
Date: Fri Feb 13 08:09:10 2009
New Revision: 744025
URL: http://svn.apache.org/viewvc?rev=744025&view=rev
Log:
Added invocation of the fireSessionClosed() event when the session has been removed. Fix for DIRMINA-661
Modified:
mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java?rev=744025&r1=744024&r2=744025&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java Fri Feb 13 08:09:10 2009
@@ -135,20 +135,28 @@
public void flush(AbstractIoSession session) {
DummySession s = (DummySession) session;
WriteRequest req = s.getWriteRequestQueue().poll(session);
- Object m = req.getMessage();
- if (m instanceof FileRegion) {
- FileRegion file = (FileRegion) m;
- try {
- file.getFileChannel().position(file.getPosition() + file.getRemainingBytes());
- file.update(file.getRemainingBytes());
- } catch (IOException e) {
- s.getFilterChain().fireExceptionCaught(e);
+
+ // Chek that the request is not null. If the session has been closed,
+ // we may not have any pending requests.
+ if (req != null) {
+ Object m = req.getMessage();
+ if (m instanceof FileRegion) {
+ FileRegion file = (FileRegion) m;
+ try {
+ file.getFileChannel().position(file.getPosition() + file.getRemainingBytes());
+ file.update(file.getRemainingBytes());
+ } catch (IOException e) {
+ s.getFilterChain().fireExceptionCaught(e);
+ }
}
+ getFilterChain().fireMessageSent(req);
}
- getFilterChain().fireMessageSent(req);
}
public void remove(AbstractIoSession session) {
+ if (!session.getCloseFuture().isClosed()) {
+ session.getFilterChain().fireSessionClosed();
+ }
}
public void updateTrafficControl(AbstractIoSession session) {