Browse Source

Changed update header check to be case-insensitive

Paul-Louis Ageneau 4 years ago
parent
commit
6144bca0f7
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/wstransport.cpp

+ 9 - 2
src/wstransport.cpp

@@ -24,6 +24,7 @@
 #if RTC_ENABLE_WEBSOCKET
 
 #include <chrono>
+#include <iterator>
 #include <list>
 #include <map>
 #include <random>
@@ -227,8 +228,14 @@ size_t WsTransport::readHttpResponse(const byte *buffer, size_t size) {
 	}
 
 	auto h = headers.find("upgrade");
-	if (h == headers.end() || h->second != "websocket")
-		throw std::runtime_error("WebSocket update header missing or mismatching");
+	if (h == headers.end())
+		throw std::runtime_error("WebSocket update header missing");
+
+	string upgrade;
+	std::transform(h->second.begin(), h->second.end(), std::back_inserter(upgrade),
+	               [](char c) { return std::tolower(c); });
+	if (upgrade != "websocket")
+		throw std::runtime_error("WebSocket update header mismatching: " + h->second);
 
 	h = headers.find("sec-websocket-accept");
 	if (h == headers.end())