THRIFT-5184: Fix header check for WebSocket connections
When establishing a WebSocket connection, Firefox sends Connection: keep-alive, Upgrade instead of just Connection: Upgrade. Check to see if Upgrade is in the header instead of checking to see if it is the entire header value.
Client: d
diff --git a/lib/d/src/thrift/transport/websocket.d b/lib/d/src/thrift/transport/websocket.d
index 25d1f7d..b800e51 100644
--- a/lib/d/src/thrift/transport/websocket.d
+++ b/lib/d/src/thrift/transport/websocket.d
@@ -121,7 +121,7 @@
upgrade_ = sicmp(upgrade, "websocket") == 0;
} else if (startsWith!compToLower(split[0], cast(ubyte[])"connection")) {
auto connection = stripLeft(cast(const(char)[])split[2]);
- connection_ = sicmp(connection, "upgrade") == 0;
+ connection_ = canFind(connection.toLower, "upgrade");
} else if (startsWith!compToLower(split[0], cast(ubyte[])"sec-websocket-key")) {
auto secWebSocketKey = stripLeft(cast(const(char)[])split[2]);
auto hash = sha1Of(secWebSocketKey ~ WEBSOCKET_GUID);