libwallet_api: fix unhandled exception on address check

This commit is contained in:
Ilya Kitaev 2016-09-30 21:43:57 +03:00
parent 1f73f80c94
commit 0019e3106b
1 changed files with 16 additions and 12 deletions

View File

@ -56,18 +56,22 @@ bool isAddressLocal(const std::string &address)
LOG_PRINT_L1("Failed to determine whether daemon is local, assuming not"); LOG_PRINT_L1("Failed to determine whether daemon is local, assuming not");
return false; return false;
} }
// resolver::resolve can throw an exception
// resolve to IP try {
boost::asio::io_service io_service; // resolve to IP
boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::io_service io_service;
boost::asio::ip::tcp::resolver::query query(u_c.host, ""); boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::iterator i = resolver.resolve(query); boost::asio::ip::tcp::resolver::query query(u_c.host, "");
while (i != boost::asio::ip::tcp::resolver::iterator()) boost::asio::ip::tcp::resolver::iterator i = resolver.resolve(query);
{ while (i != boost::asio::ip::tcp::resolver::iterator())
const boost::asio::ip::tcp::endpoint &ep = *i; {
if (ep.address().is_loopback()) const boost::asio::ip::tcp::endpoint &ep = *i;
return true; if (ep.address().is_loopback())
++i; return true;
++i;
}
} catch (const boost::system::system_error &e) {
LOG_ERROR("Failed to resolve " << address << ", :" << e.what());
} }
return false; return false;