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


Reply via email to