std.http.WebSocket: Make 'upgrade: websocket' check case-insensitive

I've seen implementations in the wild that send 'Upgrade: WebSocket',
which currently fails the handshake.

From https://datatracker.ietf.org/doc/html/rfc6455:

"If the response lacks an |Upgrade| header field or the |Upgrade| header
field contains a value that is not an ASCII case-insensitive match for
the value "websocket", the client MUST _Fail the WebSocket Connection_."
This commit is contained in:
Linus Groh 2024-09-12 18:42:21 +01:00 committed by Andrew Kelley
parent 54611e32d7
commit e17dfb9da0

View File

@ -30,7 +30,7 @@ pub fn init(
if (std.ascii.eqlIgnoreCase(header.name, "sec-websocket-key")) { if (std.ascii.eqlIgnoreCase(header.name, "sec-websocket-key")) {
sec_websocket_key = header.value; sec_websocket_key = header.value;
} else if (std.ascii.eqlIgnoreCase(header.name, "upgrade")) { } else if (std.ascii.eqlIgnoreCase(header.name, "upgrade")) {
if (!std.mem.eql(u8, header.value, "websocket")) if (!std.ascii.eqlIgnoreCase(header.value, "websocket"))
return false; return false;
upgrade_websocket = true; upgrade_websocket = true;
} }