2014-06-05 17:34 GMT+04:00  <ma...@apache.org>:
> Author: markt
> Date: Thu Jun  5 13:34:39 2014
> New Revision: 1600653
>
> URL: http://svn.apache.org/r1600653
> Log:
> Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56573
> Change the value returned by Session.getRequestURI() from the value obtained 
> from HttpServletRequest.getRequestURI() to the value obtained from 
> HttpServletRequest.getRequestURI() with the scheme changed to ws or wss as 
> appropriate. Note that the WebSocket Expert Group is expected to clarify the 
> expected behaviour for Session.getRequestURI() which may result in further 
> changes.
>
> Modified:
>     tomcat/tc7.0.x/trunk/   (props changed)
>     
> tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/server/LocalStrings.properties
>     
> tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
>     tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
>

1. The WebSocket API javadoc explicitly says that query string must be
included in the result.
(I added a comment to BZ issue with a link).

> +        // Based on request.getRequestURL() implementation
> +        StringBuilder sb = new StringBuilder();
> +        String scheme = request.getScheme();
> +        int port = request.getServerPort();
> +        if (port < 0)
> +            port = 80; // Work around java.net.URL bug
> +
> +        if (scheme.equals("http")) {
> +            sb.append("ws");
> +        } else if (scheme.equals("https")) {
> +            sb.append("wss");
> +        } else {
> +            throw new IllegalArgumentException(
> +                    sm.getString("wsHandshakeRequest.unknownScheme", 
> scheme));

2. I think  "sb.append(scheme);" would be better here.
Do we really need to throw IAE here?

> +        }
> +        sb.append("://");
> +        sb.append(request.getServerName());
> +        if ((scheme.equals("http") && (port != 80))
> +            || (scheme.equals("https") && (port != 443))) {

3. If "2." above is fixed, this condition shall be updated to uspport
unknown schemas.

        if (! ((scheme.equals("http") && (port == 80))
            || (scheme.equals("https") && (port == 443)) ) ) {

> +            sb.append(':');
> +            sb.append(port);
>          }
> +        sb.append(request.getRequestURI());
>          try {
>              requestUri = new URI(sb.toString());
>          } catch (URISyntaxException e) {
>

Best regards,
Konstantin Kolinko

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

Reply via email to