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
This commit is contained in:
penenin 2020-04-27 01:11:47 -07:00 committed by GitHub
parent c3728122d2
commit 7c4bdf9914
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -121,7 +121,7 @@ protected:
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);