Commit 439e44ae authored by Marcin Siodelski's avatar Marcin Siodelski
Browse files

[3971] Catch exceptions in the CtrlDhcp{4,6}Srv destructors.

parent 747a83bf
...@@ -226,22 +226,29 @@ void ControlledDhcpv4Srv::shutdown() { ...@@ -226,22 +226,29 @@ void ControlledDhcpv4Srv::shutdown() {
} }
ControlledDhcpv4Srv::~ControlledDhcpv4Srv() { ControlledDhcpv4Srv::~ControlledDhcpv4Srv() {
cleanup(); try {
cleanup();
// Stop worker thread running timers, if it is running.
timer_mgr_->stopThread(); // Stop worker thread running timers, if it is running.
timer_mgr_->stopThread();
// Close the command socket (if it exists).
CommandMgr::instance().closeCommandSocket(); // Close the command socket (if it exists).
CommandMgr::instance().closeCommandSocket();
// Deregister any registered commands
CommandMgr::instance().deregisterCommand("shutdown"); // Deregister any registered commands
CommandMgr::instance().deregisterCommand("statistic-get"); CommandMgr::instance().deregisterCommand("shutdown");
CommandMgr::instance().deregisterCommand("statistic-reset"); CommandMgr::instance().deregisterCommand("statistic-get");
CommandMgr::instance().deregisterCommand("statistic-remove"); CommandMgr::instance().deregisterCommand("statistic-reset");
CommandMgr::instance().deregisterCommand("statistic-get-all"); CommandMgr::instance().deregisterCommand("statistic-remove");
CommandMgr::instance().deregisterCommand("statistic-reset-all"); CommandMgr::instance().deregisterCommand("statistic-get-all");
CommandMgr::instance().deregisterCommand("statistic-remove-all"); CommandMgr::instance().deregisterCommand("statistic-reset-all");
CommandMgr::instance().deregisterCommand("statistic-remove-all");
} catch (...) {
// Don't want to throw exceptions from the destructor. The server
// is shutting down anyway.
;
}
server_ = NULL; // forget this instance. Noone should call any handlers at server_ = NULL; // forget this instance. Noone should call any handlers at
// this stage. // this stage.
......
...@@ -222,22 +222,29 @@ void ControlledDhcpv6Srv::shutdown() { ...@@ -222,22 +222,29 @@ void ControlledDhcpv6Srv::shutdown() {
} }
ControlledDhcpv6Srv::~ControlledDhcpv6Srv() { ControlledDhcpv6Srv::~ControlledDhcpv6Srv() {
cleanup(); try {
cleanup();
// Stop worker thread running timers, if it is running.
timer_mgr_->stopThread(); // Stop worker thread running timers, if it is running.
timer_mgr_->stopThread();
// Close the command socket (if it exists).
CommandMgr::instance().closeCommandSocket(); // Close the command socket (if it exists).
CommandMgr::instance().closeCommandSocket();
// Deregister any registered commands
CommandMgr::instance().deregisterCommand("shutdown"); // Deregister any registered commands
CommandMgr::instance().deregisterCommand("statistic-get"); CommandMgr::instance().deregisterCommand("shutdown");
CommandMgr::instance().deregisterCommand("statistic-reset"); CommandMgr::instance().deregisterCommand("statistic-get");
CommandMgr::instance().deregisterCommand("statistic-remove"); CommandMgr::instance().deregisterCommand("statistic-reset");
CommandMgr::instance().deregisterCommand("statistic-get-all"); CommandMgr::instance().deregisterCommand("statistic-remove");
CommandMgr::instance().deregisterCommand("statistic-reset-all"); CommandMgr::instance().deregisterCommand("statistic-get-all");
CommandMgr::instance().deregisterCommand("statistic-remove-all"); CommandMgr::instance().deregisterCommand("statistic-reset-all");
CommandMgr::instance().deregisterCommand("statistic-remove-all");
} catch (...) {
// Don't want to throw exceptions from the destructor. The server
// is shutting down anyway.
;
}
server_ = NULL; // forget this instance. There should be no callback anymore server_ = NULL; // forget this instance. There should be no callback anymore
// at this stage anyway. // at this stage anyway.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment