未验证 提交 a609496b 编写于 作者: D Daniel Larimer 提交者: GitHub

Merge pull request #3459 from EOSIO/issue3458

Potential Fix #3458 - uncaught exceptions in bnet
......@@ -302,6 +302,7 @@ namespace eosio {
void set_socket_options() {
try {
/** to minimize latency when sending short messages */
_ws->next_layer().set_option( boost::asio::ip::tcp::no_delay(true) );
......@@ -311,6 +312,9 @@ namespace eosio {
*/
_ws->next_layer().set_option( boost::asio::socket_base::send_buffer_size( 1024*1024 ) );
_ws->next_layer().set_option( boost::asio::socket_base::receive_buffer_size( 1024*1024 ) );
} catch ( ... ) {
elog( "uncaught exception on set socket options" );
}
}
void run() {
......@@ -555,7 +559,6 @@ namespace eosio {
void send( const bnet_message& msg ) { try {
if( !_strand.running_in_this_thread() ) { elog( "wrong strand" ); }
FC_ASSERT( !_out_buffer.size() );
auto ps = fc::raw::pack_size(msg);
_out_buffer.resize(ps);
......@@ -770,9 +773,13 @@ namespace eosio {
}
void on_fail( boost::system::error_code ec, const char* what ) {
try {
if( !_strand.running_in_this_thread() ) { elog( "wrong strand" ); }
elog( "${w}: ${m}", ("w", what)("m", ec.message() ) );
_ws->next_layer().close();
} catch ( ... ) {
elog( "uncaught exception on close" );
}
}
void on_accept( boost::system::error_code ec ) {
......@@ -815,10 +822,15 @@ namespace eosio {
on_message( msg );
wait_on_app();
return;
} catch ( ... ) {
wlog( "close bad payload" );
}
try {
_ws->close( boost::beast::websocket::close_code::bad_payload );
} catch ( ... ) {
elog( "uncaught exception on close" );
}
}
......@@ -912,8 +924,12 @@ namespace eosio {
}
void do_goodbye( const string& reason ) {
try {
status( "goodbye - " + reason );
_ws->next_layer().close();
} catch ( ... ) {
elog( "uncaught exception on close" );
}
}
void check_for_redundant_connection();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册