From 9c868b3927a7c0aad3f628ad0071c92f11a0923c Mon Sep 17 00:00:00 2001 From: Nathan Hourt Date: Fri, 14 Aug 2015 14:08:16 -0400 Subject: [PATCH] Fix crash on exit --- src/network/http/websocket.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/network/http/websocket.cpp b/src/network/http/websocket.cpp index 7cd613c..ee1041d 100644 --- a/src/network/http/websocket.cpp +++ b/src/network/http/websocket.cpp @@ -228,6 +228,8 @@ namespace fc { namespace http { { wlog( "unknown connection closed" ); } + if( _connections.empty() && _closed ) + _closed->set_value(); }).wait(); }); @@ -244,17 +246,25 @@ namespace fc { namespace http { { wlog( "unknown connection failed" ); } + if( _connections.empty() && _closed ) + _closed->set_value(); }).wait(); } }); } ~websocket_server_impl() - { + { if( _server.is_listening() ) _server.stop_listening(); + + if( _connections.size() ) + _closed = new fc::promise(); + auto cpy_con = _connections; for( auto item : cpy_con ) _server.close( item.first, 0, "server exit" ); + + if( _closed ) _closed->wait(); } typedef std::map > con_map;