Author: berndf
Date: Wed May 16 13:15:13 2012
New Revision: 1339153

URL: http://svn.apache.org/viewvc?rev=1339153&view=rev
Log:
VYSPER-311: close session when invalid sid is received. 
for what it's worth, I don't like private fields very much.

Modified:
    
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
    
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandler.java
    
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshServlet.java

Modified: 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java?rev=1339153&r1=1339152&r2=1339153&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
 (original)
+++ 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
 Wed May 16 13:15:13 2012
@@ -229,7 +229,7 @@ public class BoshBackedSessionContext ex
                             requestsWindow.firstKey(), 
delayedResponseQueue.size());
                     // TODO do not silently drop this stanza
                 }
-                return;
+                return;            
             }
             req = requestsWindow.remove(requestsWindow.firstKey());
             boshResponse = getBoshResponse(responseStanza, 
req.getRid().equals(highestReadRid) ? null : highestReadRid);
@@ -281,7 +281,7 @@ public class BoshBackedSessionContext ex
      * @param br 
      * @param condition the error condition
      */
-    private void error(BoshRequest br, String condition) {
+    public void error(BoshRequest br, String condition) {
         final Long rid = br.getRid();
         requestsWindow.put(rid, br);
         BoshRequest req = requestsWindow.remove(requestsWindow.firstKey());

Modified: 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandler.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandler.java?rev=1339153&r1=1339152&r2=1339153&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandler.java
 (original)
+++ 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandler.java
 Wed May 16 13:15:13 2012
@@ -27,7 +27,6 @@ import javax.servlet.AsyncContext;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.vysper.xml.fragment.Attribute;
-import org.apache.vysper.xml.fragment.Renderer;
 import org.apache.vysper.xml.fragment.XMLElement;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -131,8 +130,10 @@ public class BoshHandler {
             BoshBackedSessionContext session = null;
             if (sid != null) session = sessions.get(sid);
             if (session == null) {
-                LOGGER.warn("Received an invalid sid = '{}', should 
terminating connection", sid);
-                // TODO terminate connection
+                LOGGER.warn("Received an invalid sid = '{}', terminating 
connection", sid);
+                final AsyncContext context = 
br.getHttpServletRequest().startAsync();
+                // create temporary session to be able to reuse the code
+                new BoshBackedSessionContext(this, serverRuntimeContext, 
inactivityChecker).error(br, "invalid session id");
                 return;
             }
             synchronized (session) {

Modified: 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshServlet.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshServlet.java?rev=1339153&r1=1339152&r2=1339153&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshServlet.java
 (original)
+++ 
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshServlet.java
 Wed May 16 13:15:13 2012
@@ -40,29 +40,29 @@ import org.xml.sax.SAXException;
  */
 public class BoshServlet extends HttpServlet {
 
+    private static final Logger logger = 
LoggerFactory.getLogger(BoshServlet.class);
+
+    private static final long serialVersionUID = 1979722775762481476L;
+
     public static final String TXT_CONTENT_TYPE = "text/plain";
 
     public static final String HTML_CONTENT_TYPE = "text/html; charset=UTF-8";
 
     public static final String XML_CONTENT_TYPE = "text/xml; charset=UTF-8";
 
-    private static final long serialVersionUID = 1979722775762481476L;
-
-    private static final String FLASH_CROSS_DOMAIN_POLICY_URI = 
"/crossdomain.xml";
-
-    private static final String INFO_GET = "This is an XMPP BOSH connection 
manager, only POST is allowed";
+    protected static final String FLASH_CROSS_DOMAIN_POLICY_URI = 
"/crossdomain.xml";
 
-    private static final String SERVER_IDENTIFICATION = "Vysper/0.8";
+    protected static final String INFO_GET = "This is an XMPP BOSH connection 
manager, only POST is allowed";
 
-    private final Logger logger = LoggerFactory.getLogger(BoshServlet.class);
+    protected static final String SERVER_IDENTIFICATION = "Vysper/0.8";
 
-    private final BoshHandler boshHandler = new BoshHandler();
+    protected final BoshHandler boshHandler = new BoshHandler();
 
-    private List<String> accessControlAllowOrigin;
+    protected List<String> accessControlAllowOrigin;
 
-    private String accessControlMaxAge = "86400"; // one day in seconds
+    protected String accessControlMaxAge = "86400"; // one day in seconds
 
-    private String accessControlAllowMethods = "GET, POST, OPTIONS";
+    protected String accessControlAllowMethods = "GET, POST, OPTIONS";
 
     /**
      * Setter for the {@link ServerRuntimeContext}


Reply via email to