commit e17dfb9da0bee4c1f118e0a72b88f29f43365f61 (tree)
parent 54611e32d76e97c1f3145f4a14221668e70d52fb
Author: Linus Groh <mail@linusgroh.de>
Date: Thu, 12 Sep 2024 18:42:21 +0100
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_."
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/std/http/WebSocket.zig b/lib/std/http/WebSocket.zig
@@ -30,7 +30,7 @@ pub fn init(
if (std.ascii.eqlIgnoreCase(header.name, "sec-websocket-key")) {
sec_websocket_key = header.value;
} 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;
upgrade_websocket = true;
}