From 11906dc2ceee979c70f2825c90b672aefdfde8d5 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Mon, 8 Jul 2013 16:15:45 -0500 Subject: [PATCH] Adds is_server detection flag to deflate extension init --- test/extension/permessage_deflate.cpp | 6 +++--- .../extensions/permessage_deflate/disabled.hpp | 2 +- .../extensions/permessage_deflate/enabled.hpp | 13 +++++++++---- websocketpp/processors/hybi13.hpp | 2 +- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/test/extension/permessage_deflate.cpp b/test/extension/permessage_deflate.cpp index 656afa0..aafe3d1 100644 --- a/test/extension/permessage_deflate.cpp +++ b/test/extension/permessage_deflate.cpp @@ -507,7 +507,7 @@ BOOST_AUTO_TEST_CASE( compress_data ) { std::string compress_out; std::string decompress_out; - v.exts.init(); + v.exts.init(true); v.ec = v.exts.compress(compress_in,compress_out); BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() ); @@ -520,7 +520,7 @@ BOOST_AUTO_TEST_CASE( compress_data ) { BOOST_AUTO_TEST_CASE( compress_data_multiple ) { ext_vars v; - v.exts.init(); + v.exts.init(true); for (int i = 0; i < 2; i++) { std::string compress_in = "Hello"; @@ -550,7 +550,7 @@ BOOST_AUTO_TEST_CASE( decompress_data ) { std::string out = ""; std::string reference = "Hello"; - v.exts.init(); + v.exts.init(true); v.ec = v.exts.decompress(in,11,out); diff --git a/websocketpp/extensions/permessage_deflate/disabled.hpp b/websocketpp/extensions/permessage_deflate/disabled.hpp index 809c9e0..c87f00d 100644 --- a/websocketpp/extensions/permessage_deflate/disabled.hpp +++ b/websocketpp/extensions/permessage_deflate/disabled.hpp @@ -58,7 +58,7 @@ public: } /// Initialize state - lib::error_code init() { + lib::error_code init(bool is_server) { return lib::error_code(); } diff --git a/websocketpp/extensions/permessage_deflate/enabled.hpp b/websocketpp/extensions/permessage_deflate/enabled.hpp index f5ba0c2..5b5e022 100644 --- a/websocketpp/extensions/permessage_deflate/enabled.hpp +++ b/websocketpp/extensions/permessage_deflate/enabled.hpp @@ -49,7 +49,7 @@ namespace extensions { * ### permessage-deflate interface * * **init**\n - * `lib::error_code init()`\n + * `lib::error_code init(bool is_server)`\n * Performs initialization * * **is_implimented**\n @@ -246,15 +246,20 @@ public: /// Initialize zlib state /** + * Note: this should be called *after* the negotiation methods. It will use + * information from the negotiation to determine how to initialize the zlib + * data structures. * * @todo memory level, strategy, etc are hardcoded - * @todo server detection is hardcoded + * + * @param is_server Whether or not to initialize as a server or client. + * @return A code representing the error that occurred, if any */ - lib::error_code init() { + lib::error_code init(bool is_server) { uint8_t deflate_bits; uint8_t inflate_bits; - if (true /*is_server*/) { + if (is_server) { deflate_bits = m_s2c_max_window_bits; inflate_bits = m_c2s_max_window_bits; } else { diff --git a/websocketpp/processors/hybi13.hpp b/websocketpp/processors/hybi13.hpp index 680d834..fcab686 100644 --- a/websocketpp/processors/hybi13.hpp +++ b/websocketpp/processors/hybi13.hpp @@ -127,7 +127,7 @@ public: // Note: this list will need commas if WebSocket++ ever // supports more than one extension ret.second += neg_ret.second; - m_permessage_deflate.init(); + m_permessage_deflate.init(base::m_server); continue; } }