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