From: Francis Dupont Date: Sun, 8 Jan 2017 09:53:33 +0000 (+0100) Subject: [5090] Applied propose fix by stopping the IO service on run exists X-Git-Tag: trac4096_base~3^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9485112d93a2b66df06b4cab1591e7bfddf94baf;p=thirdparty%2Fkea.git [5090] Applied propose fix by stopping the IO service on run exists --- diff --git a/src/bin/agent/ctrl_agent_process.cc b/src/bin/agent/ctrl_agent_process.cc index cdabc39577..51e2377f2b 100644 --- a/src/bin/agent/ctrl_agent_process.cc +++ b/src/bin/agent/ctrl_agent_process.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -31,15 +31,20 @@ void CtrlAgentProcess::run() { LOG_INFO(agent_logger, CTRL_AGENT_STARTED).arg(VERSION); - while (!shouldShutdown()) { - try { + try { + while (!shouldShutdown()) { getIoService()->run_one(); - - } catch (const std::exception& ex) { - LOG_FATAL(agent_logger, CTRL_AGENT_FAILED).arg(ex.what()); - isc_throw(DProcessBaseError, - "Process run method failed: " << ex.what()); } + stopIOService(); + } catch (const std::exception& ex) { + LOG_FATAL(agent_logger, CTRL_AGENT_FAILED).arg(ex.what()); + try { + stopIOService(); + } catch (...) { + // Ignore double errors + } + isc_throw(DProcessBaseError, + "Process run method failed: " << ex.what()); } LOG_DEBUG(agent_logger, DBGLVL_START_SHUT, CTRL_AGENT_RUN_EXIT);