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}