Author: markt
Date: Tue Apr 23 19:58:34 2013
New Revision: 1471123
URL: http://svn.apache.org/r1471123
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54781
Fix NPE if no matching Endpoint is found.
Handle forwarded requests as well.
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java?rev=1471123&r1=1471122&r2=1471123&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java Tue Apr
23 19:58:34 2013
@@ -78,7 +78,7 @@ public class WsFilter implements Filter
!headerContainsToken((HttpServletRequest) request,
Constants.UPGRADE_HEADER_NAME,
Constants.UPGRADE_HEADER_VALUE)) {
- // Note an HTTP request that includes a valid upgrade request to
+ // Not an HTTP request that includes a valid upgrade request to
// web socket
chain.doFilter(request, response);
return;
@@ -122,6 +122,13 @@ public class WsFilter implements Filter
}
WsMappingResult mappingResult = sc.findMapping(path);
+ if (mappingResult == null) {
+ // No endpoint registered for the requested path. Let the
+ // application handle it (it might redirect or forward for example)
+ chain.doFilter(request, response);
+ return;
+ }
+
ServerEndpointConfig sec = mappingResult.getConfig();
// Origin check
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java?rev=1471123&r1=1471122&r2=1471123&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
Tue Apr 23 19:58:34 2013
@@ -19,12 +19,14 @@ package org.apache.tomcat.websocket.serv
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.WeakHashMap;
+import javax.servlet.DispatcherType;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.websocket.DeploymentException;
@@ -111,7 +113,11 @@ public class WsServerContainer extends W
FilterRegistration fr = servletContext.addFilter(
WsFilter.class.getName(), WsFilter.class);
- fr.addMappingForUrlPatterns(null, false, "/*");
+
+ EnumSet<DispatcherType> types = EnumSet.of(DispatcherType.REQUEST,
+ DispatcherType.FORWARD);
+
+ fr.addMappingForUrlPatterns(types, false, "/*");
}
@@ -233,6 +239,12 @@ public class WsServerContainer extends W
SortedSet<TemplatePathMatch> templateMatches =
configTemplateMatchMap.get(key);
+ if (templateMatches == null) {
+ // No templates with an equal number of segments so there will be
+ // no matches
+ return null;
+ }
+
// List is in alphabetical order of normalised templates.
// Correct match is the first one that matches.
Map<String,String> pathParams = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]