From e17dfb9da0bee4c1f118e0a72b88f29f43365f61 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Thu, 12 Sep 2024 18:42:21 +0100 Subject: [PATCH] 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_." --- lib/std/http/WebSocket.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/http/WebSocket.zig b/lib/std/http/WebSocket.zig index ad513fddf8..08bc420b67 100644 --- 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; }