Merge commit '31adee4'

This commit is contained in:
Eric Frias 2017-06-20 18:18:35 -04:00
commit 7a44b21acf
2 changed files with 40 additions and 9 deletions

View file

@ -256,10 +256,11 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/git_revision.cpp.in" "${CMAKE_CU
list(APPEND sources "${CMAKE_CURRENT_BINARY_DIR}/git_revision.cpp") list(APPEND sources "${CMAKE_CURRENT_BINARY_DIR}/git_revision.cpp")
list(APPEND sources ${fc_headers}) list(APPEND sources ${fc_headers})
add_subdirectory( vendor/websocketpp ) add_subdirectory( vendor/websocketpp EXCLUDE_FROM_ALL )
add_subdirectory( vendor/udt4 ) add_subdirectory( vendor/udt4 )
setup_library( fc SOURCES ${sources} LIBRARY_TYPE STATIC DONT_INSTALL_LIBRARY ) setup_library( fc SOURCES ${sources} LIBRARY_TYPE STATIC )
install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION include )
# begin readline stuff # begin readline stuff
find_package(Curses) find_package(Curses)
@ -323,7 +324,7 @@ target_include_directories(fc
${CMAKE_CURRENT_SOURCE_DIR}/vendor/udt4/src ${CMAKE_CURRENT_SOURCE_DIR}/vendor/udt4/src
${CMAKE_CURRENT_SOURCE_DIR}/vendor/websocketpp ${CMAKE_CURRENT_SOURCE_DIR}/vendor/websocketpp
${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp ${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp
${ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}
) )
#target_link_libraries( fc PUBLIC udt ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${ECC_LIB} ) #target_link_libraries( fc PUBLIC udt ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${ECC_LIB} )

View file

@ -1,9 +1,19 @@
#include <fc/network/http/websocket.hpp> #include <fc/network/http/websocket.hpp>
#ifndef WIN32
// websocket++ currently does not build correctly with permessage deflate enabled
// since chrome does not work with websocketpp's implementation of permessage-deflate
// yet, I'm just disabling it on windows instead of trying to fix the build error.
# define ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
#endif
#include <websocketpp/config/asio_client.hpp> #include <websocketpp/config/asio_client.hpp>
#include <websocketpp/config/asio.hpp> #include <websocketpp/config/asio.hpp>
#include <websocketpp/server.hpp> #include <websocketpp/server.hpp>
#include <websocketpp/config/asio_client.hpp> #include <websocketpp/config/asio_client.hpp>
#include <websocketpp/extensions/permessage_deflate/enabled.hpp> #ifdef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
# include <websocketpp/extensions/permessage_deflate/enabled.hpp>
#endif
#include <websocketpp/client.hpp> #include <websocketpp/client.hpp>
#include <websocketpp/logger/stub.hpp> #include <websocketpp/logger/stub.hpp>
@ -56,7 +66,8 @@ namespace fc { namespace http {
// override default value of 5 sec timeout // override default value of 5 sec timeout
static const long timeout_open_handshake = 0; static const long timeout_open_handshake = 0;
}; };
#ifdef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
struct asio_with_stub_log_and_deflate : public websocketpp::config::asio { struct asio_with_stub_log_and_deflate : public websocketpp::config::asio {
typedef asio_with_stub_log_and_deflate type; typedef asio_with_stub_log_and_deflate type;
typedef asio base; typedef asio base;
@ -98,6 +109,7 @@ namespace fc { namespace http {
// override default value of 5 sec timeout // override default value of 5 sec timeout
static const long timeout_open_handshake = 0; static const long timeout_open_handshake = 0;
}; };
#endif ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
struct asio_tls_stub_log : public websocketpp::config::asio_tls { struct asio_tls_stub_log : public websocketpp::config::asio_tls {
typedef asio_tls_stub_log type; typedef asio_tls_stub_log type;
@ -132,6 +144,7 @@ namespace fc { namespace http {
transport_type; transport_type;
}; };
#ifdef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
struct asio_tls_stub_log_and_deflate : public websocketpp::config::asio_tls { struct asio_tls_stub_log_and_deflate : public websocketpp::config::asio_tls {
typedef asio_tls_stub_log_and_deflate type; typedef asio_tls_stub_log_and_deflate type;
typedef asio_tls base; typedef asio_tls base;
@ -169,6 +182,7 @@ namespace fc { namespace http {
typedef websocketpp::extensions::permessage_deflate::enabled typedef websocketpp::extensions::permessage_deflate::enabled
<permessage_deflate_config> permessage_deflate_type; <permessage_deflate_config> permessage_deflate_type;
}; };
#endif
using websocketpp::connection_hdl; using websocketpp::connection_hdl;
@ -513,10 +527,18 @@ namespace fc { namespace http {
} // namespace detail } // namespace detail
websocket_server::websocket_server(bool enable_permessage_deflate /* = true */) : websocket_server::websocket_server(bool enable_permessage_deflate /* = true */) :
my( enable_permessage_deflate ? my(
#ifdef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
enable_permessage_deflate ?
(detail::abstract_websocket_server*)new detail::websocket_server_impl<detail::asio_with_stub_log_and_deflate> : (detail::abstract_websocket_server*)new detail::websocket_server_impl<detail::asio_with_stub_log_and_deflate> :
#endif
(detail::abstract_websocket_server*)new detail::websocket_server_impl<detail::asio_with_stub_log> ) (detail::abstract_websocket_server*)new detail::websocket_server_impl<detail::asio_with_stub_log> )
{} {
#ifndef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
if (enable_permessage_deflate)
elog("Websocket permessage-deflate requested but not enabled during compile");
#endif
}
websocket_server::~websocket_server(){} websocket_server::~websocket_server(){}
void websocket_server::on_connection( const on_connection_handler& handler ) void websocket_server::on_connection( const on_connection_handler& handler )
@ -543,10 +565,18 @@ namespace fc { namespace http {
websocket_tls_server::websocket_tls_server(const string& server_pem, websocket_tls_server::websocket_tls_server(const string& server_pem,
const string& ssl_password, const string& ssl_password,
bool enable_permessage_deflate /* = true */) : bool enable_permessage_deflate /* = true */) :
my( enable_permessage_deflate ? my(
#ifdef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
enable_permessage_deflate ?
(detail::abstract_websocket_server*)new detail::websocket_tls_server_impl<detail::asio_tls_stub_log_and_deflate>(server_pem, ssl_password) : (detail::abstract_websocket_server*)new detail::websocket_tls_server_impl<detail::asio_tls_stub_log_and_deflate>(server_pem, ssl_password) :
#endif
(detail::abstract_websocket_server*)new detail::websocket_tls_server_impl<detail::asio_tls_stub_log>(server_pem, ssl_password) ) (detail::abstract_websocket_server*)new detail::websocket_tls_server_impl<detail::asio_tls_stub_log>(server_pem, ssl_password) )
{} {
#ifndef ENABLE_WEBSOCKET_PERMESSAGE_DEFLATE
if (enable_permessage_deflate)
elog("Websocket permessage-deflate requested but not enabled during compile");
#endif
}
websocket_tls_server::~websocket_tls_server(){} websocket_tls_server::~websocket_tls_server(){}
void websocket_tls_server::on_connection( const on_connection_handler& handler ) void websocket_tls_server::on_connection( const on_connection_handler& handler )