$Author: faust $
*/
-#include <stdio.h>
+//#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <dlfcn.h>
-#include <signal.h>
#include <fcntl.h>
+#include <csignal>
+#include <cerrno>
#include <fstream>
#include <vector>
#include <set>
{
public:
STG_STOPPER() { nonstop = true; }
- bool GetStatus() { return nonstop; };
+ bool GetStatus() const { return nonstop; };
#ifdef NO_DAEMON
void Stop(const char * __file__, int __line__)
#else
}
}
//-----------------------------------------------------------------------------
-void CatchPROF(int)
-{
-/*STG_LOGGER & WriteServLog = GetStgLogger();
-WriteServLog("CatchPROF");*/
-}
-//-----------------------------------------------------------------------------
void CatchUSR1(int)
{
childExited = true;
}
}
-//-----------------------------------------------------------------------------
+/*//-----------------------------------------------------------------------------
void CatchSEGV(int, siginfo_t *, void *)
{
-/*char fileName[50];
+char fileName[50];
sprintf(fileName, "/tmp/stg_segv.%d", getpid());
FILE * f = fopen(fileName, "wt");
if (f)
segv_action.sa_flags = SA_SIGINFO;
segv_action.sa_restorer = NULL;
-sigaction(SIGSEGV, &segv_action, &segv_action_old);*/
-}
+sigaction(SIGSEGV, &segv_action, &segv_action_old);
+}*/
//-----------------------------------------------------------------------------
static void SetSignalHandlers()
{
newsa.sa_mask = sigmask;
newsa.sa_flags = 0;
sigaction(SIGINT, &newsa, &oldsa);
-/*///////
-sigemptyset(&sigmask);
-sigaddset(&sigmask, SIGPROF);
-newsa.sa_handler = CatchPROF;
-newsa.sa_mask = sigmask;
-newsa.sa_flags = 0;
-sigaction(SIGPROF, &newsa, &oldsa);*/
//////
sigemptyset(&sigmask);
sigaddset(&sigmask, SIGPIPE);
string startFile(settings->GetConfDir() + START_FILE);
#endif
-//SetSignalHandlers();
if (ForkAndWait(settings->GetConfDir()) < 0)
{
STG_LOGGER & WriteServLog = GetStgLogger();
WriteServLog.SetLogFileName(settings->GetLogFileName());
WriteServLog("Stg v. %s", SERVER_VERSION);
-for (int i = 0; i < settings->GetExecutersNum(); i++)
+for (size_t i = 0; i < settings->GetExecutersNum(); i++)
{
int ret = StartScriptExecuter(argv[0], settings->GetExecMsgKey(), &msgID, settings);
if (ret < 0)
{
STG_LOGGER & WriteServLog = GetStgLogger();
WriteServLog("Start Script Executer error!");
- //goto exitLbl;
return 1;
}
if (ret == 1)
users = new USERS(settings, dataStore, tariffs, admins->GetSysAdmin());
traffCnt = new TRAFFCOUNTER(users, tariffs, settings->GetRulesFileName());
traffCnt->SetMonitorDir(settings->GetMonitorDir());
-//tariffs->SetUsers(users);
modSettings = settings->GetModulesSettings();
creat(startFile.c_str(), S_IRUSR);
#endif
-//*a_kill_it = 0;
-
while (nonstop.GetStatus())
{
if (needRulesReloading)
exitLblNotStarted:
-/*modIter = modules.begin();
+modIter = modules.begin();
while (modIter != modules.end())
{
std::string name = modIter->GetFileName();
printfd(__FILE__, "Failed to unload module '%s'\n", name.c_str());
}
++modIter;
- }*/
+ }
if (traffCnt)
{
return 0;
}
//-----------------------------------------------------------------------------
-
-