Author: markt
Date: Fri Jan 17 11:50:11 2014
New Revision: 1559081

URL: http://svn.apache.org/r1559081
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56025
Always call ServerEndpointConfig.Configurator.getNegotiatedSubprotocol()
CReate the EndPoint instance after calling 
ServerEndpointConfig.Configurator.modifyHandshake()

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/server/UpgradeUtil.java

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/UpgradeUtil.java?rev=1559081&r1=1559080&r2=1559081&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/UpgradeUtil.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/UpgradeUtil.java Fri 
Jan 17 11:50:11 2014
@@ -115,11 +115,8 @@ public class UpgradeUtil {
         // Sub-protocols
         List<String> subProtocols = getTokensFromHeader(req,
                 "Sec-WebSocket-Protocol");
-        if (!subProtocols.isEmpty()) {
-            subProtocol = sec.getConfigurator().
-                    getNegotiatedSubprotocol(
-                            sec.getSubprotocols(), subProtocols);
-        }
+        subProtocol = sec.getConfigurator().getNegotiatedSubprotocol(
+                sec.getSubprotocols(), subProtocols);
 
         // Extensions
         // Currently no extensions are supported by this implementation
@@ -145,18 +142,6 @@ public class UpgradeUtil {
             }
             resp.setHeader("Sec-WebSocket-Extensions", sb.toString());
         }
-        Endpoint ep;
-        try {
-            Class<?> clazz = sec.getEndpointClass();
-            if (Endpoint.class.isAssignableFrom(clazz)) {
-                ep = (Endpoint) sec.getConfigurator().getEndpointInstance(
-                        clazz);
-            } else {
-                ep = new PojoEndpointServer();
-            }
-        } catch (InstantiationException e) {
-            throw new ServletException(e);
-        }
 
         WsHandshakeRequest wsRequest = new WsHandshakeRequest(req);
         WsHandshakeResponse wsResponse = new WsHandshakeResponse();
@@ -174,6 +159,19 @@ public class UpgradeUtil {
             }
         }
 
+        Endpoint ep;
+        try {
+            Class<?> clazz = sec.getEndpointClass();
+            if (Endpoint.class.isAssignableFrom(clazz)) {
+                ep = (Endpoint) sec.getConfigurator().getEndpointInstance(
+                        clazz);
+            } else {
+                ep = new PojoEndpointServer();
+            }
+        } catch (InstantiationException e) {
+            throw new ServletException(e);
+        }
+
         WsHttpUpgradeHandler wsHandler =
                 req.upgrade(WsHttpUpgradeHandler.class);
         wsHandler.preInit(ep, perSessionServerEndpointConfig, sc, wsRequest,



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to