X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/02be813c72c75c61beaef0266bd5adf713e67b42..bee1318e72d01e37085e44d9c100926419b3c7ca:/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp diff --git a/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp b/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp index 1f2b8e18..d3fdba55 100644 --- a/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp +++ b/projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp @@ -1,5 +1,3 @@ -#include // TODO: usleep - #include #include @@ -75,14 +73,21 @@ return rpcc.GetPlugin(); } RPC_CONFIG::RPC_CONFIG() - : users(NULL), + : errorStr(), + rpcConfigSettings(), + users(NULL), admins(NULL), tariffs(NULL), store(NULL), + settings(), + rpcRegistry(), rpcServer(NULL), running(false), stopped(true), - dayFee(0) + tid(), + cookies(), + dayFee(0), + dirNames() { } @@ -133,7 +138,10 @@ int RPC_CONFIG::Stop() { running = false; for (int i = 0; i < 5 && !stopped; ++i) - usleep(200000); + { + struct timespec ts = {0, 200000000}; + nanosleep(&ts, NULL); + } //rpcServer->terminate(); if (!stopped) { @@ -143,9 +151,13 @@ if (!stopped) printfd(__FILE__, "Failed to kill thread\n"); } for (int i = 0; i < 25 && !stopped; ++i) - usleep(200000); + { + struct timespec ts = {0, 200000000}; + nanosleep(&ts, NULL); + } if (!stopped) { + running = true; printfd(__FILE__, "Failed to stop RPC thread\n"); errorStr = "Failed to stop RPC thread"; return -1; @@ -160,6 +172,10 @@ return 0; void * RPC_CONFIG::Run(void * rc) { +sigset_t signalSet; +sigfillset(&signalSet); +pthread_sigmask(SIG_BLOCK, &signalSet, NULL); + RPC_CONFIG * config = static_cast(rc); config->stopped = false;