Fix the restart processing.

This commit is contained in:
Jonathan Naylor
2024-08-28 16:32:20 +01:00
parent cf96a2653f
commit aa03a96925

View File

@@ -60,16 +60,11 @@ static int m_signal = 0;
static bool m_reload = false; static bool m_reload = false;
#if !defined(_WIN32) && !defined(_WIN64) #if !defined(_WIN32) && !defined(_WIN64)
static void sigHandler1(int signum) static void sigHandler(int signum)
{ {
m_killed = true; m_killed = true;
m_signal = signum; m_signal = signum;
} }
static void sigHandler2(int signum)
{
m_reload = true;
}
#endif #endif
const char* HEADER1 = "This software is for use on amateur radio networks only,"; const char* HEADER1 = "This software is for use on amateur radio networks only,";
@@ -96,16 +91,16 @@ int main(int argc, char** argv)
} }
#if !defined(_WIN32) && !defined(_WIN64) #if !defined(_WIN32) && !defined(_WIN64)
::signal(SIGINT, sigHandler1); ::signal(SIGINT, sigHandler);
::signal(SIGTERM, sigHandler1); ::signal(SIGTERM, sigHandler);
::signal(SIGHUP, sigHandler1); ::signal(SIGHUP, sigHandler);
::signal(SIGUSR1, sigHandler2);
#endif #endif
int ret = 0; int ret = 0;
do { do {
m_signal = 0; m_signal = 0;
m_killed = false;
CMMDVMHost* host = new CMMDVMHost(std::string(iniFile)); CMMDVMHost* host = new CMMDVMHost(std::string(iniFile));
ret = host->run(); ret = host->run();
@@ -113,6 +108,8 @@ int main(int argc, char** argv)
delete host; delete host;
switch (m_signal) { switch (m_signal) {
case 0:
break;
case 2: case 2:
::LogInfo("MMDVMHost-%s exited on receipt of SIGINT", VERSION); ::LogInfo("MMDVMHost-%s exited on receipt of SIGINT", VERSION);
break; break;
@@ -120,16 +117,14 @@ int main(int argc, char** argv)
::LogInfo("MMDVMHost-%s exited on receipt of SIGTERM", VERSION); ::LogInfo("MMDVMHost-%s exited on receipt of SIGTERM", VERSION);
break; break;
case 1: case 1:
::LogInfo("MMDVMHost-%s exited on receipt of SIGHUP", VERSION); ::LogInfo("MMDVMHost-%s is restarting on receipt of SIGHUP", VERSION);
break; m_reload = true;
case 10:
::LogInfo("MMDVMHost-%s is restarting on receipt of SIGUSR1", VERSION);
break; break;
default: default:
::LogInfo("MMDVMHost-%s exited on receipt of an unknown signal", VERSION); ::LogInfo("MMDVMHost-%s exited on receipt of an unknown signal", VERSION);
break; break;
} }
} while (m_signal == 10); } while (m_reload || (m_signal == 1));
::LogFinalise(); ::LogFinalise();