epee: use the socket::bind variant which does not throw
When this throws in a loop, stack trace generation can take a significant amount of CPU
This commit is contained in:
parent
91c7d68b2d
commit
8eab6147f4
|
@ -1110,7 +1110,15 @@ POP_WARNINGS
|
||||||
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(adr.c_str()), 0);
|
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(adr.c_str()), 0);
|
||||||
sock_.bind(local_endpoint);
|
boost::system::error_code ec;
|
||||||
|
sock_.bind(local_endpoint, ec);
|
||||||
|
if (ec)
|
||||||
|
{
|
||||||
|
MERROR("Error binding to " << adr << ": " << ec.message());
|
||||||
|
if (sock_.is_open())
|
||||||
|
sock_.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1216,7 +1224,15 @@ POP_WARNINGS
|
||||||
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(adr.c_str()), 0);
|
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(adr.c_str()), 0);
|
||||||
sock_.bind(local_endpoint);
|
boost::system::error_code ec;
|
||||||
|
sock_.bind(local_endpoint, ec);
|
||||||
|
if (ec)
|
||||||
|
{
|
||||||
|
MERROR("Error binding to " << adr << ": " << ec.message());
|
||||||
|
if (sock_.is_open())
|
||||||
|
sock_.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<boost::asio::deadline_timer> sh_deadline(new boost::asio::deadline_timer(io_service_));
|
boost::shared_ptr<boost::asio::deadline_timer> sh_deadline(new boost::asio::deadline_timer(io_service_));
|
||||||
|
|
Loading…
Reference in New Issue