--- smsdaemon/daemon.cpp 2008/12/08 13:14:55 153 +++ smsdaemon/daemon.cpp 2008/12/17 13:51:57 190 @@ -12,7 +12,8 @@ #include "ConfigFile.h" #include "daemon.h" -#include "common.h" +#include "Common.h" +#include "Logger.h" @@ -24,17 +25,17 @@ switch (sig) { case SIGHUP: - Common::instance()->logMessage("hangup signal catched"); + Logger::logMessage("hangup signal catched"); break; case SIGTERM: - Common::instance()->logMessage("terminate signal catched...exiting"); + Logger::logMessage("terminate signal catched...exiting"); Common::instance()->mainContinue = false; break; default: std::stringstream ss; ss << "Received unknown signal: " << sig; - Common::instance()->logMessage(ss.str()); + Logger::logMessage(ss.str()); break; } } @@ -53,10 +54,11 @@ } else { - cmn->logMessage( string("could not lookup userid: ") + userstr ); + Logger::logMessage( string("could not lookup userid: ") + userstr ); exit(1); } + group* grp = getgrnam(groupstr.c_str() ); if (grp != 0) { @@ -64,7 +66,7 @@ } else { - cmn->logMessage( string("could not lookup groupid: ") + groupstr ); + Logger::logMessage( string("could not lookup groupid: ") + groupstr ); exit(1); } } @@ -72,7 +74,13 @@ void daemonCleanup() { - unlink( Common::instance()->pidfile.c_str() ); + Common* cmn = Common::instance(); + Logger::logMessage("Cleaning up daemon"); + + seteuid(0); + setegid(0); + unlink( cmn->pidfile.c_str() ); + } void daemonize() @@ -128,6 +136,8 @@ signal(SIGTTIN, SIG_IGN); signal(SIGHUP, signal_handler); /* catch hangup signal */ signal(SIGTERM, signal_handler); /* catch kill signal */ + signal(SIGINT, signal_handler); /* keyboard interrupt */ + signal(SIGQUIT, signal_handler); /* QUIT */ /*this program is now a daemon*/ setegid( cmn->gid );