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