@@ -214,27 +214,26 @@ std::string HTTPParserHelpers::calculateAccept(const char* nonce)
214214 return fmt::format (" {}" , base);
215215}
216216
217- std::string encode_websocket_handshake_reply (char const * nonce)
217+ std::string encode_websocket_handshake_reply (char const * nonce, char const * protocol = " " )
218218{
219- constexpr auto res =
220- " HTTP/1.1 101 Switching Protocols\r\n "
221- " Upgrade: websocket\r\n "
222- " Connection: Upgrade\r\n "
223- " Access-Control-Allow-Origin: \" *\"\r\n "
224- " Sec-WebSocket-Accept: {}\r\n\r\n " ;
225- return fmt::format (res, HTTPParserHelpers::calculateAccept (nonce));
226- }
227-
228- std::string encode_websocket_handshake_reply (char const * nonce, char const * protocol)
229- {
230- constexpr auto res =
231- " HTTP/1.1 101 Switching Protocols\r\n "
232- " Upgrade: websocket\r\n "
233- " Connection: Upgrade\r\n "
234- " Access-Control-Allow-Origin: \" *\"\r\n "
235- " Sec-WebSocket-Protocol: {}\r\n "
236- " Sec-WebSocket-Accept: {}\r\n\r\n " ;
237- return fmt::format (res, protocol, HTTPParserHelpers::calculateAccept (nonce));
219+ if (strlen (protocol) == 0 ) {
220+ constexpr auto res =
221+ " HTTP/1.1 101 Switching Protocols\r\n "
222+ " Upgrade: websocket\r\n "
223+ " Connection: Upgrade\r\n "
224+ " Access-Control-Allow-Origin: \" *\"\r\n "
225+ " Sec-WebSocket-Accept: {}\r\n\r\n " ;
226+ return fmt::format (res, HTTPParserHelpers::calculateAccept (nonce));
227+ } else {
228+ constexpr auto res =
229+ " HTTP/1.1 101 Switching Protocols\r\n "
230+ " Upgrade: websocket\r\n "
231+ " Connection: Upgrade\r\n "
232+ " Access-Control-Allow-Origin: \" *\"\r\n "
233+ " Sec-WebSocket-Protocol: {}\r\n "
234+ " Sec-WebSocket-Accept: {}\r\n\r\n " ;
235+ return fmt::format (res, protocol, HTTPParserHelpers::calculateAccept (nonce));
236+ }
238237}
239238
240239void parse_http_request (char * start, size_t size, HTTPParser* parser)
0 commit comments