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) {