Skip to content

Commit

Permalink
Fix issue #1171: Order of object destruction (#1175)
Browse files Browse the repository at this point in the history
- Connection object is now destroyed before client object
- Client is destroyed only when wspp_callback_client is destroyed to prevent race condition with the destructor
  • Loading branch information
dejaniv authored and BillyONeal committed Jul 12, 2019
1 parent 5b32e16 commit 06aeb8e
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions Release/src/websockets/client/ws_client_wspp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -689,9 +689,6 @@ class wspp_callback_client : public websocket_client_callback_impl,
}
} // unlock

// Delete client to make sure Websocketpp cleans up all Boost.Asio portions.
m_client.reset();

if (connecting)
{
websocket_exception exc(ec, build_error_msg(ec, "set_fail_handler"));
Expand Down Expand Up @@ -801,15 +798,14 @@ class wspp_callback_client : public websocket_client_callback_impl,
websocketpp::client<websocketpp::config::asio_tls_client> m_client;
};

websocketpp::connection_hdl m_con;

pplx::task_completion_event<void> m_connect_tce;
pplx::task_completion_event<void> m_close_tce;

// Used to safe guard the wspp client.
std::mutex m_wspp_client_lock;
State m_state;
std::unique_ptr<websocketpp_client_base> m_client;
websocketpp::connection_hdl m_con;

// Queue to track pending sends
outgoing_msg_queue m_out_queue;
Expand Down

0 comments on commit 06aeb8e

Please sign in to comment.