diff --git a/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp b/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp index b583bac3..285588d6 100644 --- a/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp +++ b/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp @@ -27,13 +27,15 @@ namespace ix bool clientNoContextTakeover, bool serverNoContextTakeover, uint8_t clientMaxWindowBits, - uint8_t serverMaxWindowBits) + uint8_t serverMaxWindowBits, + bool sendClientServerMaxWindowBits) { _enabled = enabled; _clientNoContextTakeover = clientNoContextTakeover; _serverNoContextTakeover = serverNoContextTakeover; _clientMaxWindowBits = clientMaxWindowBits; _serverMaxWindowBits = serverMaxWindowBits; + _sendClientServerMaxWindowBits = sendClientServerMaxWindowBits; sanitizeClientMaxWindowBits(); } @@ -59,6 +61,7 @@ namespace ix _enabled = false; _clientNoContextTakeover = false; _serverNoContextTakeover = false; + _sendClientServerMaxWindowBits = true; _clientMaxWindowBits = kDefaultClientMaxWindowBits; _serverMaxWindowBits = kDefaultServerMaxWindowBits; @@ -128,8 +131,11 @@ namespace ix if (_clientNoContextTakeover) ss << "; client_no_context_takeover"; if (_serverNoContextTakeover) ss << "; server_no_context_takeover"; - ss << "; server_max_window_bits=" << static_cast(_serverMaxWindowBits); - ss << "; client_max_window_bits=" << static_cast(_clientMaxWindowBits); + if (_sendClientServerMaxWindowBits) + { + ss << "; server_max_window_bits=" << static_cast(_serverMaxWindowBits); + ss << "; client_max_window_bits=" << static_cast(_clientMaxWindowBits); + } ss << "\r\n"; @@ -168,6 +174,11 @@ namespace ix return _serverMaxWindowBits; } + bool WebSocketPerMessageDeflateOptions::getSendClientServerMaxWindowBits() const + { + return _sendClientServerMaxWindowBits; + } + bool WebSocketPerMessageDeflateOptions::startsWith(const std::string& str, const std::string& start) { diff --git a/ixwebsocket/IXWebSocketPerMessageDeflateOptions.h b/ixwebsocket/IXWebSocketPerMessageDeflateOptions.h index 95751b61..0650bbc7 100644 --- a/ixwebsocket/IXWebSocketPerMessageDeflateOptions.h +++ b/ixwebsocket/IXWebSocketPerMessageDeflateOptions.h @@ -19,7 +19,8 @@ namespace ix bool clientNoContextTakeover = false, bool serverNoContextTakeover = false, uint8_t clientMaxWindowBits = kDefaultClientMaxWindowBits, - uint8_t serverMaxWindowBits = kDefaultServerMaxWindowBits); + uint8_t serverMaxWindowBits = kDefaultServerMaxWindowBits, + bool sendClientServerMaxWindowBits = true); WebSocketPerMessageDeflateOptions(std::string extension); @@ -29,6 +30,7 @@ namespace ix bool getServerNoContextTakeover() const; uint8_t getServerMaxWindowBits() const; uint8_t getClientMaxWindowBits() const; + bool getSendClientServerMaxWindowBits() const; static bool startsWith(const std::string& str, const std::string& start); static std::string removeSpaces(const std::string& str); @@ -40,6 +42,7 @@ namespace ix bool _enabled; bool _clientNoContextTakeover; bool _serverNoContextTakeover; + bool _sendClientServerMaxWindowBits; uint8_t _clientMaxWindowBits; uint8_t _serverMaxWindowBits;