diff --git a/src/cpp/ripple/WSConnection.h b/src/cpp/ripple/WSConnection.h index ca088225ec..d6fe475f49 100644 --- a/src/cpp/ripple/WSConnection.h +++ b/src/cpp/ripple/WSConnection.h @@ -1,5 +1,5 @@ -#include "../websocketpp/src/sockets/tls.hpp" +#include "../websocketpp/src/sockets/autotls.hpp" #include "../websocketpp/src/websocketpp.hpp" #include "../json/value.h" diff --git a/src/cpp/ripple/WSDoor.cpp b/src/cpp/ripple/WSDoor.cpp index 961ec3f3ce..ec4a84e89d 100644 --- a/src/cpp/ripple/WSDoor.cpp +++ b/src/cpp/ripple/WSDoor.cpp @@ -2,7 +2,7 @@ #include "Log.h" #define WSDOOR_CPP -#include "../websocketpp/src/sockets/tls.hpp" +#include "../websocketpp/src/sockets/autotls.hpp" #include "../websocketpp/src/websocketpp.hpp" SETUP_LOG(); @@ -59,80 +59,40 @@ void WSDoor::startListening() SSL_CTX_set_tmp_dh_callback(mCtx->native_handle(), handleTmpDh); - if (mPublic ? theConfig.WEBSOCKET_PUBLIC_SECURE : theConfig.WEBSOCKET_SECURE) + // Construct a single handler for all requests. + websocketpp::server_autotls::handler::ptr handler(new WSServerHandler(mCtx, mPublic)); + + // Construct a websocket server. + mSEndpoint = new websocketpp::server_autotls(handler); + + // mEndpoint->alog().unset_level(websocketpp::log::alevel::ALL); + // mEndpoint->elog().unset_level(websocketpp::log::elevel::ALL); + + // Call the main-event-loop of the websocket server. + try { - // Construct a single handler for all requests. - websocketpp::server_tls::handler::ptr handler(new WSServerHandler(mCtx, mPublic)); - - // Construct a websocket server. - mSEndpoint = new websocketpp::server_tls(handler); - - // mEndpoint->alog().unset_level(websocketpp::log::alevel::ALL); - // mEndpoint->elog().unset_level(websocketpp::log::elevel::ALL); - - // Call the main-event-loop of the websocket server. - try - { - mSEndpoint->listen( - boost::asio::ip::tcp::endpoint( - boost::asio::ip::address().from_string(mIp), mPort)); - } - catch (websocketpp::exception& e) - { - cLog(lsWARNING) << "websocketpp exception: " << e.what(); - while (1) // temporary workaround for websocketpp throwing exceptions on access/close races - { // https://github.com/zaphoyd/websocketpp/issues/98 - try - { - mSEndpoint->get_io_service().run(); - break; - } - catch (websocketpp::exception& e) - { - cLog(lsWARNING) << "websocketpp exception: " << e.what(); - } + mSEndpoint->listen( + boost::asio::ip::tcp::endpoint( + boost::asio::ip::address().from_string(mIp), mPort)); + } + catch (websocketpp::exception& e) + { + cLog(lsWARNING) << "websocketpp exception: " << e.what(); + while (1) // temporary workaround for websocketpp throwing exceptions on access/close races + { // https://github.com/zaphoyd/websocketpp/issues/98 + try + { + mSEndpoint->get_io_service().run(); + break; + } + catch (websocketpp::exception& e) + { + cLog(lsWARNING) << "websocketpp exception: " << e.what(); } } - - delete mSEndpoint; } - else - { - // Construct a single handler for all requests. - websocketpp::server::handler::ptr handler(new WSServerHandler(mCtx, mPublic)); - // Construct a websocket server. - mEndpoint = new websocketpp::server(handler); - - // mEndpoint->alog().unset_level(websocketpp::log::alevel::ALL); - // mEndpoint->elog().unset_level(websocketpp::log::elevel::ALL); - - // Call the main-event-loop of the websocket server. - try - { - mEndpoint->listen( - boost::asio::ip::tcp::endpoint( - boost::asio::ip::address().from_string(mIp), mPort)); - } - catch (websocketpp::exception& e) - { - cLog(lsWARNING) << "websocketpp exception: " << e.what(); - while (1) // temporary workaround for websocketpp throwing exceptions on access/close races - { // https://github.com/zaphoyd/websocketpp/issues/98 - try - { - mEndpoint->get_io_service().run(); - break; - } - catch (websocketpp::exception& e) - { - cLog(lsWARNING) << "websocketpp exception: " << e.what(); - } - } - } - - delete mEndpoint; - } + delete mSEndpoint; } WSDoor* WSDoor::createWSDoor(const std::string& strIp, const int iPort, bool bPublic) @@ -154,8 +114,6 @@ void WSDoor::stop() { if (mThread) { - if (mEndpoint) - mEndpoint->stop(); if (mSEndpoint) mSEndpoint->stop();