Fix crash on exit with websocket_client

This commit is contained in:
Nathan Hourt 2015-05-27 14:54:11 -04:00
parent 637f475e44
commit 8012ab4705

View file

@ -393,12 +393,12 @@ namespace fc { namespace http {
_client.set_message_handler( [&]( connection_hdl hdl, message_ptr msg ){ _client.set_message_handler( [&]( connection_hdl hdl, message_ptr msg ){
_client_thread.async( [&](){ _client_thread.async( [&](){
wdump((msg->get_payload())); wdump((msg->get_payload()));
_connection->on_message( msg->get_payload() ); if( _connection )
_connection->on_message( msg->get_payload() );
}).wait(); }).wait();
}); });
_client.set_close_handler( [=]( connection_hdl hdl ){ _client.set_close_handler( [=]( connection_hdl hdl ){
if( _connection ) _client_thread.async( [&](){ if( _connection ) {_connection->closed(); _connection.reset();} } ).wait();
_client_thread.async( [&](){ if( _connection ) _connection->closed(); _connection.reset(); } ).wait();
if( _closed ) _closed->set_value(); if( _closed ) _closed->set_value();
}); });
_client.set_fail_handler( [=]( connection_hdl hdl ){ _client.set_fail_handler( [=]( connection_hdl hdl ){
@ -419,6 +419,7 @@ namespace fc { namespace http {
if(_connection ) if(_connection )
{ {
_connection->close(0, "client closed"); _connection->close(0, "client closed");
_connection.reset();
_closed->wait(); _closed->wait();
} }
} }