Commit 8b42a077 authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰

[support8785] ISC and std exceptions in handleSignal() are now caught

  The calls to handleSignal() are now wrapped with catch clauses
  for both ISC and standard exceptions. This would not solve the
  underlying issue, but at least would cause the server to continue
  after the issue occurs.
parent 7384d94e
......@@ -201,6 +201,14 @@ from a client. Server does not process empty Hostname options and therefore
option is skipped. The argument holds the client and transaction identification
information.
% DHCP4_HANDLE_SIGNAL_EXCEPTION_ISC An ISC exception was thrown while handing signal: %1
This error message is printed when an ISC exception was raised during signal
processing. This likely indicates a coding error and should be reported to ISC.
% DHCP4_HANDLE_SIGNAL_EXCEPTION_STD An standard exception was thrown while handing signal: %1
This error message is printed when a standard type exception was raised during signal
processing. This likely indicates a coding error and should be reported to ISC.
% DHCP4_HOOKS_LIBS_RELOAD_FAIL reload of hooks libraries failed
A "libreload" command was issued to reload the hooks libraries but for
some reason the reload failed. Other error messages issued from the
......
......@@ -420,7 +420,23 @@ Dhcpv4Srv::run() {
// select() function is called. If the function was called before
// receivePacket the process could wait up to the duration of timeout
// of select() to terminate.
handleSignal();
try {
handleSignal();
} catch (const isc::Exception& e) {
// ISC-derived exception occurred. The nature of this exception
// indicates that it originated from ISC code. If this happens,
// it will be easy to fix as it is in the code that is under
// ISC control.
LOG_ERROR(dhcp4_logger, DHCP4_HANDLE_SIGNAL_EXCEPTION_ISC)
.arg(e.what());
} catch (const std::exception& e) {
// Standard exception occurred. The nature of this exception
// indicates that it was caused in non-ISC code. Fixing this
// issue will be somewhat more difficult than the one caused
// by ISC code.
LOG_ERROR(dhcp4_logger, DHCP4_HANDLE_SIGNAL_EXCEPTION_STD)
.arg(e.what());
}
// Execute ready timers for the lease database, e.g. Lease File Cleanup.
try {
......
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