From 28b7619419032070858302008409fcdfbd2b8c96 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Wed, 17 Jun 2015 10:37:20 +0200 Subject: [PATCH] allow any "case" for Upgrade RFC6455: An |Upgrade| header field containing the value "websocket", treated as an ASCII case-insensitive value. --- src/WebSocketsClient.cpp | 11 +++++++---- src/WebSocketsServer.cpp | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/WebSocketsClient.cpp b/src/WebSocketsClient.cpp index 81e8a6d..9ed5d5c 100644 --- a/src/WebSocketsClient.cpp +++ b/src/WebSocketsClient.cpp @@ -319,10 +319,13 @@ void WebSocketsClient::handleHeader(WSclient_t * client) { client->cCode = headerLine.substring(9, headerLine.indexOf(' ', 9)).toInt(); } else if(headerLine == "Connection: Upgrade") { client->cIsUpgrade = true; - } else if(headerLine == "Upgrade: websocket") { - client->cIsWebsocket = true; - } else if(headerLine == "Upgrade: WebSocket") { - client->cIsWebsocket = true; + } else if(headerLine.startsWith("Upgrade: ")) { + // 9 = lenght of "Upgrade: " + String low = headerLine.substring(9); + low.toLowerCase(); + if(low == "websocket") { + client->cIsWebsocket = true; + } } else if(headerLine.startsWith("Sec-WebSocket-Accept: ")) { // 22 = lenght of "Sec-WebSocket-Accept: " client->cAccept = headerLine.substring(22); diff --git a/src/WebSocketsServer.cpp b/src/WebSocketsServer.cpp index c593dc3..cdabd2c 100644 --- a/src/WebSocketsServer.cpp +++ b/src/WebSocketsServer.cpp @@ -404,10 +404,13 @@ void WebSocketsServer::handleHeader(WSclient_t * client) { client->cUrl = headerLine.substring(4, headerLine.indexOf(' ', 4)); } else if(headerLine == "Connection: Upgrade") { client->cIsUpgrade = true; - } else if(headerLine == "Upgrade: websocket") { - client->cIsWebsocket = true; - } else if(headerLine == "Upgrade: WebSocket") { - client->cIsWebsocket = true; + } else if(headerLine.startsWith("Upgrade: ")) { + // 9 = lenght of "Upgrade: " + String low = headerLine.substring(9); + low.toLowerCase(); + if(low == "websocket") { + client->cIsWebsocket = true; + } } else if(headerLine.startsWith("Sec-WebSocket-Version: ")) { // 23 = lenght of "Sec-WebSocket-Version: " client->cVersion = headerLine.substring(23).toInt();