Fix parsing the Sec-WebSocket-Protocol header.

This commit is contained in:
Sadie Powell 2021-10-04 22:53:38 +01:00
parent 1befd6ea00
commit 0412fc0f40

View File

@ -415,9 +415,11 @@ class WebSocketHook : public IOHookMiddle
HTTPHeaderFinder protocolheader; HTTPHeaderFinder protocolheader;
if (protocolheader.Find(recvq, "Sec-WebSocket-Protocol:", 23, reqend)) if (protocolheader.Find(recvq, "Sec-WebSocket-Protocol:", 23, reqend))
{ {
irc::spacesepstream protostream(protocolheader.ExtractValue(recvq)); irc::commasepstream protostream(protocolheader.ExtractValue(recvq));
for (std::string proto; protostream.GetToken(proto); ) for (std::string proto; protostream.GetToken(proto); )
{ {
proto.erase(std::remove_if(proto.begin(), proto.end(), ::isspace), proto.end());
bool is_binary = stdalgo::string::equalsci(proto, "binary.inspircd.org"); bool is_binary = stdalgo::string::equalsci(proto, "binary.inspircd.org");
bool is_text = stdalgo::string::equalsci(proto, "text.inspircd.org"); bool is_text = stdalgo::string::equalsci(proto, "text.inspircd.org");