Skip to content

Commit

Permalink
Merge pull request EOSIO#3459 from EOSIO/issue3458
Browse files Browse the repository at this point in the history
Potential Fix EOSIO#3458 - uncaught exceptions in bnet
  • Loading branch information
bytemaster authored May 27, 2018
2 parents f72c09c + cd2c29f commit a609496
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions plugins/bnet_plugin/bnet_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) );

Expand All @@ -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() {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -770,9 +773,13 @@ namespace eosio {
}

void on_fail( boost::system::error_code ec, const char* what ) {
if( !_strand.running_in_this_thread() ) { elog( "wrong strand" ); }
elog( "${w}: ${m}", ("w", what)("m", ec.message() ) );
_ws->next_layer().close();
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 ) {
Expand Down Expand Up @@ -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" );
}
}

Expand Down Expand Up @@ -912,8 +924,12 @@ namespace eosio {
}

void do_goodbye( const string& reason ) {
status( "goodbye - " + reason );
_ws->next_layer().close();
try {
status( "goodbye - " + reason );
_ws->next_layer().close();
} catch ( ... ) {
elog( "uncaught exception on close" );
}
}

void check_for_redundant_connection();
Expand Down

0 comments on commit a609496

Please sign in to comment.