Author: markt
Date: Tue Jan 24 20:20:11 2017
New Revision: 1780109
URL: http://svn.apache.org/viewvc?rev=1780109&view=rev
Log:
Correctly create a CONNECT request when establishing a WebSocket connection via
a proxy.
Patch provided by Svetlin Zarev.
This closes #39
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
tomcat/trunk/webapps/docs/changelog.xml
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1780109&r1=1780108&r2=1780109&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Tue
Jan 24 20:20:11 2017
@@ -236,18 +236,20 @@ public class WsWebSocketContainer implem
}
}
- // If sa is null, no proxy is configured so need to create sa
- if (sa == null) {
- if (port == -1) {
- if ("ws".equalsIgnoreCase(scheme)) {
- sa = new InetSocketAddress(host, 80);
- } else {
- // Must be wss due to scheme validation above
- sa = new InetSocketAddress(host, 443);
- }
+ // If the port is not explicitly specified, compute it based on the
+ // scheme
+ if (port == -1) {
+ if ("ws".equalsIgnoreCase(scheme)) {
+ port = 80;
} else {
- sa = new InetSocketAddress(host, port);
+ // Must be wss due to scheme validation above
+ port = 443;
}
+ }
+
+ // If sa is null, no proxy is configured so need to create sa
+ if (sa == null) {
+ sa = new InetSocketAddress(host, port);
} else {
proxyConnect = createProxyRequest(host, port);
}
@@ -450,16 +452,14 @@ public class WsWebSocketContainer implem
StringBuilder request = new StringBuilder();
request.append("CONNECT ");
request.append(host);
- if (port != -1) {
- request.append(':');
- request.append(port);
- }
+ request.append(':');
+ request.append(port);
+
request.append(" HTTP/1.1\r\nProxy-Connection:
keep-alive\r\nConnection: keepalive\r\nHost: ");
request.append(host);
- if (port != -1) {
- request.append(':');
- request.append(port);
- }
+ request.append(':');
+ request.append(port);
+
request.append("\r\n\r\n");
byte[] bytes =
request.toString().getBytes(StandardCharsets.ISO_8859_1);
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1780109&r1=1780108&r2=1780109&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Jan 24 20:20:11 2017
@@ -92,6 +92,15 @@
</add>
</changelog>
</subsection>
+ <subsection name="WebSocket">
+ <changelog>
+ <fix>
+ <bug>60617</bug>: Correctly create a <code>CONNECT</code> request when
+ establishing a WebSocket connection via a proxy. Patch provided by
+ Svetlin Zarev. (markt)
+ </fix>
+ </changelog>
+ </subsection>
<subsection name="Tribes">
<changelog>
<add>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]