You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2010/12/23 17:11:46 UTC

svn commit: r1052308 - in /mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina: XmppIoHandlerAdapter.java codec/StanzaWriterProtocolEncoder.java

Author: berndf
Date: Thu Dec 23 16:11:46 2010
New Revision: 1052308

URL: http://svn.apache.org/viewvc?rev=1052308&view=rev
Log:
handle Session disposal: client disconnects ungracefully, make server handle unavailability

Modified:
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/codec/StanzaWriterProtocolEncoder.java

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java?rev=1052308&r1=1052307&r2=1052308&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java Thu Dec 23 16:11:46 2010
@@ -113,7 +113,7 @@ public class XmppIoHandlerAdapter implem
     public void sessionClosed(IoSession ioSession) throws Exception {
         SessionContext sessionContext = extractSession(ioSession);
         String sessionId = "UNKNOWN";
-        if (sessionContext != null && ioSession.isConnected()) {
+        if (sessionContext != null) {
             sessionId = sessionContext.getSessionId();
             sessionContext.endSession(SessionContext.SessionTerminationCause.CONNECTION_ABORT);
         }

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/codec/StanzaWriterProtocolEncoder.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/codec/StanzaWriterProtocolEncoder.java?rev=1052308&r1=1052307&r2=1052308&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/codec/StanzaWriterProtocolEncoder.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/mina/codec/StanzaWriterProtocolEncoder.java Thu Dec 23 16:11:46 2010
@@ -22,10 +22,12 @@ package org.apache.vysper.mina.codec;
 import java.nio.charset.CharsetEncoder;
 
 import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.ProtocolEncoder;
 import org.apache.mina.filter.codec.ProtocolEncoderOutput;
 import org.apache.vysper.charset.CharsetUtil;
+import org.apache.vysper.mina.XmppIoHandlerAdapter;
 import org.apache.vysper.xml.fragment.Renderer;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.writer.StanzaWriter;
@@ -65,7 +67,14 @@ public class StanzaWriterProtocolEncoder
     }
 
     public void dispose(IoSession ioSession) throws Exception {
-        logger.warn("unhandled StanzaWriterProtocolEncoder.dispose()");
+        final IoHandler handler = ioSession.getHandler();
+        if (handler instanceof XmppIoHandlerAdapter) {
+            XmppIoHandlerAdapter xmppIoHandlerAdapter = (XmppIoHandlerAdapter)handler;
+            xmppIoHandlerAdapter.sessionClosed(ioSession);
+            logger.debug("terminated and disposed session id = " + ioSession.getId());
+        } else {
+            logger.warn("unhandled StanzaWriterProtocolEncoder.dispose()");
+        }
     }
 
     public CharsetEncoder getSessionEncoder() {