summaryrefslogtreecommitdiff
path: root/src/inspircd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inspircd.cpp')
-rw-r--r--src/inspircd.cpp35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 022f06673..6d8272361 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -142,6 +142,7 @@ namespace
// Attempts to fork into the background.
bool ForkIntoBackground()
{
+#ifndef _WIN32
// We use VoidSignalHandler whilst forking to avoid breaking daemon scripts
// if the parent process exits with SIGTERM (15) instead of EXIT_STATUS_NOERROR (0).
signal(SIGTERM, VoidSignalHandler);
@@ -167,8 +168,9 @@ namespace
{
setsid();
signal(SIGTERM, InspIRCd::SetSignal);
- return true;
}
+#endif
+ return true;
}
// Increase the size of a core dump file to improve debugging problems.
@@ -199,6 +201,21 @@ namespace
#endif
}
+ // Sets handlers for various process signals.
+ void SetSignals()
+ {
+#ifndef _WIN32
+ signal(SIGALRM, SIG_IGN);
+ signal(SIGCHLD, SIG_IGN);
+ signal(SIGHUP, InspIRCd::SetSignal);
+ signal(SIGPIPE, SIG_IGN);
+ signal(SIGUSR1, SIG_IGN);
+ signal(SIGUSR2, SIG_IGN);
+ signal(SIGXFSZ, SIG_IGN);
+#endif
+ signal(SIGTERM, InspIRCd::SetSignal);
+ }
+
// Required for returning the proper value of EXIT_SUCCESS for the parent process.
void VoidSignalHandler(int)
{
@@ -242,20 +259,6 @@ void InspIRCd::Cleanup()
Logs->CloseLogs();
}
-void InspIRCd::SetSignals()
-{
-#ifndef _WIN32
- signal(SIGALRM, SIG_IGN);
- signal(SIGCHLD, SIG_IGN);
- signal(SIGHUP, InspIRCd::SetSignal);
- signal(SIGPIPE, SIG_IGN);
- signal(SIGUSR1, SIG_IGN);
- signal(SIGUSR2, SIG_IGN);
- signal(SIGXFSZ, SIG_IGN);
-#endif
- signal(SIGTERM, InspIRCd::SetSignal);
-}
-
void InspIRCd::WritePID(const std::string& filename, bool exitonfail)
{
#ifndef _WIN32
@@ -450,7 +453,7 @@ InspIRCd::InspIRCd(int argc, char** argv)
}
#endif
- this->SetSignals();
+ SetSignals();
if (!Config->cmdline.nofork && !ForkIntoBackground())
{