From c769c9238ad62178f506038178714a1c35aa2769 Mon Sep 17 00:00:00 2001 From: Stefan Floeren <42731906+stefan-floeren@users.noreply.github.com> Date: Tue, 16 Apr 2019 08:38:01 +0200 Subject: [PATCH 1/2] Replace make_shared with new in some cases Replace make_shared for asio types that take a lib::ref as a parameter. This should fix the ASIO change (boostorg/asio@59066d8) for 1.70, while keeping it backwards compatible to older boost versions. --- websocketpp/transport/asio/connection.hpp | 7 ++++--- websocketpp/transport/asio/endpoint.hpp | 3 +-- websocketpp/transport/asio/security/none.hpp | 3 +-- websocketpp/transport/asio/security/tls.hpp | 3 +-- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp index 60f88a79..1ccda8f3 100644 --- a/websocketpp/transport/asio/connection.hpp +++ b/websocketpp/transport/asio/connection.hpp @@ -311,9 +311,10 @@ class connection : public config::socket_type::socket_con_type { * needed. */ timer_ptr set_timer(long duration, timer_handler callback) { - timer_ptr new_timer = lib::make_shared( - lib::ref(*m_io_service), - lib::asio::milliseconds(duration) + timer_ptr new_timer( + new lib::asio::steady_timer( + *m_io_service, + lib::asio::milliseconds(duration)) ); if (config::enable_multithreading) { diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index ddab2c74..4b719a97 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -195,8 +195,7 @@ class endpoint : public config::socket_type { m_io_service = ptr; m_external_io_service = true; - m_acceptor = lib::make_shared( - lib::ref(*m_io_service)); + m_acceptor.reset(new lib::asio::ip::tcp::acceptor(*m_io_service)); m_state = READY; ec = lib::error_code(); diff --git a/websocketpp/transport/asio/security/none.hpp b/websocketpp/transport/asio/security/none.hpp index 5c8293db..6c7d3524 100644 --- a/websocketpp/transport/asio/security/none.hpp +++ b/websocketpp/transport/asio/security/none.hpp @@ -168,8 +168,7 @@ class connection : public lib::enable_shared_from_this { return socket::make_error_code(socket::error::invalid_state); } - m_socket = lib::make_shared( - lib::ref(*service)); + m_socket.reset(new lib::asio::ip::tcp::socket(*service)); if (m_socket_init_handler) { m_socket_init_handler(m_hdl, *m_socket); diff --git a/websocketpp/transport/asio/security/tls.hpp b/websocketpp/transport/asio/security/tls.hpp index c76fd9aa..04ac3790 100644 --- a/websocketpp/transport/asio/security/tls.hpp +++ b/websocketpp/transport/asio/security/tls.hpp @@ -193,8 +193,7 @@ class connection : public lib::enable_shared_from_this { if (!m_context) { return socket::make_error_code(socket::error::invalid_tls_context); } - m_socket = lib::make_shared( - _WEBSOCKETPP_REF(*service),lib::ref(*m_context)); + m_socket.reset(new socket_type(*service, *m_context)); if (m_socket_init_handler) { m_socket_init_handler(m_hdl, get_socket()); From f810ca2e800e9b55be41c5911cf1d1185fcd516b Mon Sep 17 00:00:00 2001 From: Stefan Floeren <42731906+stefan-floeren@users.noreply.github.com> Date: Wed, 17 Apr 2019 10:06:18 +0000 Subject: [PATCH 2/2] Fix missed entries; fix testing --- CMakeLists.txt | 2 +- websocketpp/transport/asio/connection.hpp | 3 +-- websocketpp/transport/asio/endpoint.hpp | 7 ++----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2786aba9..951de975 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,7 +202,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES) endif () if (NOT Boost_USE_STATIC_LIBS) - add_definitions (/DBOOST_TEST_DYN_LINK) + add_definitions (-DBOOST_TEST_DYN_LINK) endif () set (Boost_FIND_REQUIRED TRUE) diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp index 1ccda8f3..57dda74a 100644 --- a/websocketpp/transport/asio/connection.hpp +++ b/websocketpp/transport/asio/connection.hpp @@ -462,8 +462,7 @@ class connection : public config::socket_type::socket_con_type { m_io_service = io_service; if (config::enable_multithreading) { - m_strand = lib::make_shared( - lib::ref(*io_service)); + m_strand.reset(new lib::asio::io_service::strand(*io_service)); } lib::error_code ec = socket_con_type::init_asio(io_service, m_strand, diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index 4b719a97..94509adb 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -687,9 +687,7 @@ class endpoint : public config::socket_type { * @since 0.3.0 */ void start_perpetual() { - m_work = lib::make_shared( - lib::ref(*m_io_service) - ); + m_work.reset(new lib::asio::io_service::work(*m_io_service)); } /// Clears the endpoint's perpetual flag, allowing it to exit when empty @@ -853,8 +851,7 @@ class endpoint : public config::socket_type { // Create a resolver if (!m_resolver) { - m_resolver = lib::make_shared( - lib::ref(*m_io_service)); + m_resolver.reset(new lib::asio::ip::tcp::resolver(*m_io_service)); } tcon->set_uri(u);