Commit e17dfb9da0

Linus Groh <mail@linusgroh.de>
2024-09-12 19:42:21
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_."
1 parent 54611e3
Changed files (1)
lib
std
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;
         }