diff --git a/a8/websocketsession.cc b/a8/websocketsession.cc index 65bb4a6..1cc582f 100644 --- a/a8/websocketsession.cc +++ b/a8/websocketsession.cc @@ -33,6 +33,7 @@ const unsigned char WEBSOCKET_PAYLOAD_LEN_UINT16 = 126; const unsigned char WEBSOCKET_PAYLOAD_LEN_UINT64 = 127; const char* WEB_SOCKET_KEY = "Sec-WebSocket-Key: "; +const char* WEB_SOCKET_KEY2 = "Sec-Websocket-Key: "; namespace a8 { @@ -98,8 +99,7 @@ namespace a8 if (!pend) { return; } - char* p1 = strstr(buf + offset, WEB_SOCKET_KEY); - if (p1) { + if (strstr(buf + offset, WEB_SOCKET_KEY) || strstr(buf + offset, WEB_SOCKET_KEY2)) { ProcessWsHandShake(buf, offset, buflen); } else { ProcessHttpHandShake(buf, offset, buflen); @@ -113,8 +113,13 @@ namespace a8 return; } std::string server_key; + const char* key = WEB_SOCKET_KEY; { char* p1 = strstr(buf + offset, WEB_SOCKET_KEY); + if (!p1) { + p1 = strstr(buf + offset, WEB_SOCKET_KEY2); + key = WEB_SOCKET_KEY2; + } if (p1) { p1 += strlen(WEB_SOCKET_KEY); char* p2 = strstr(p1 , "\r\n"); @@ -131,7 +136,7 @@ namespace a8 std::string response = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" "Upgrade: websocket\r\n" "Connection: Upgrade\r\n" - "Sec-WebSocket-Accept: " + hash_data + "\r\n" + + + key + hash_data + "\r\n" + "\r\n"; SendBuff(response.data(), response.size()); handshook_ = true;