From d25c95dfc3b3206b98c622a07dd9ecb3c6f091ac Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 5 Mar 2009 12:15:07 +0000 Subject: fixed daemonizing and boost::thread problem (workaround) fixed signalController --- src/resolver.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/resolver.cpp') diff --git a/src/resolver.cpp b/src/resolver.cpp index d599a96..6d5c777 100644 --- a/src/resolver.cpp +++ b/src/resolver.cpp @@ -58,6 +58,7 @@ void waitAndEnqueue(u_int32_t s, const std::string& addr, const std::string& por gResolver.resolveTcp(addr, port, onResolve, r); } + template ResolveHandler::ResolveHandler(const std::string& addr, const std::string& port, boost::function)> const& onResolve, ResolvAddrType r) : addr_(addr), port_(port), callback_(onResolve), resolv_addr_type_(r) { @@ -109,9 +110,19 @@ void Resolver::run() cLog.msg(Log::PRIO_DEBUG) << "Resolver Thread started"; while(1) { - io_service_.run(); - io_service_.reset(); - boost::this_thread::sleep(boost::posix_time::milliseconds(250)); + try { + io_service_.run(); + io_service_.reset(); + boost::this_thread::sleep(boost::posix_time::milliseconds(250)); + } + catch(const std::runtime_error& e) + { + cLog.msg(Log::PRIO_ERROR) << "resolver caught runtime error, restarting: " << e.what(); + } + catch(const std::exception& e) + { + cLog.msg(Log::PRIO_ERROR) << "resolver caught exception, restarting: " << e.what(); + } } } -- cgit v1.2.3