You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/02/08 22:18:06 UTC

svn commit: r1068583 - /mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java

Author: ngn
Date: Tue Feb  8 21:18:04 2011
New Revision: 1068583

URL: http://svn.apache.org/viewvc?rev=1068583&view=rev
Log:
Improve exception handling when S2S sockets are closing down 

Modified:
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java?rev=1068583&r1=1068582&r2=1068583&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java Tue Feb  8 21:18:04 2011
@@ -18,6 +18,7 @@
  *
  */
 package org.apache.vysper.xmpp.server.s2s;
+import java.io.IOException;
 import java.nio.channels.UnresolvedAddressException;
 import java.util.Arrays;
 import java.util.List;
@@ -239,7 +240,12 @@ public class DefaultXMPPServerConnector 
          */
         @Override
         public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
-            LOG.warn("Exception thrown by XMPP server connector to " + otherServer + ", probably a bug in Vysper", cause);
+            if(cause instanceof IOException) {
+                // socket closed
+                close();
+            } else {
+                LOG.warn("Exception thrown by XMPP server connector to " + otherServer + ", probably a bug in Vysper", cause);
+            }
         }
 
         private StanzaHandler lookupHandler(Stanza stanza) {
@@ -268,6 +274,9 @@ public class DefaultXMPPServerConnector 
                 Stanza opener = new ServerResponses().getStreamOpenerForServerConnector(serverRuntimeContext.getServerEnitity(), otherServer, XMPPVersion.VERSION_1_0, sessionContext);
                 
                 sessionContext.write(opener);
+            } else if(message == SslFilter.SESSION_UNSECURED) {
+                // unsecured, closing
+                close();
             } else if(message instanceof Stanza) {
                 Stanza stanza = (Stanza) message;
                 
@@ -318,7 +327,7 @@ public class DefaultXMPPServerConnector 
                     // TODO other stanzas coming here?
                 }
             } else {
-                throw new RuntimeException("Only handles SSL events and stanzas");
+                throw new RuntimeException("Only handles SSL events and stanzas, got: " + message.getClass());
             }
         }