diff --git a/utils.cpp b/utils.cpp index b419233..26d3661 100644 --- a/utils.cpp +++ b/utils.cpp @@ -315,8 +315,19 @@ bool parseHttpHeader(CirBuf &buf, std::string &websocket_key, int &websocket_ver trim(value); std::string value_lower = str_tolower(value); - if (name == "upgrade" && value_lower == "websocket") - upgradeHeaderSeen = true; + if (name == "upgrade") + { + std::vector protocols = splitToVector(value_lower, ','); + for (std::string &prot : protocols) + { + trim(prot); + + if (prot == "websocket") + { + upgradeHeaderSeen = true; + } + } + } else if (name == "connection" && strContains(value_lower, "upgrade")) connectionHeaderSeen = true; else if (name == "sec-websocket-key")