X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/44378b3654976b893daa96f44cea9fcb62092209..4c346b97338163448e1a684bd1b5d53271f34cd6:/projects/stargazer/plugins/other/smux/smux.cpp diff --git a/projects/stargazer/plugins/other/smux/smux.cpp b/projects/stargazer/plugins/other/smux/smux.cpp index fc45fe04..61ed8026 100644 --- a/projects/stargazer/plugins/other/smux/smux.cpp +++ b/projects/stargazer/plugins/other/smux/smux.cpp @@ -34,8 +34,10 @@ return a.first.PrefixLess(b.first); } SMUX_SETTINGS::SMUX_SETTINGS() - : ip(0), - port(0) + : errorStr(), + ip(0), + port(0), + password() {} int SMUX_SETTINGS::ParseSettings(const MODULE_SETTINGS & s) @@ -94,6 +96,11 @@ SMUX::SMUX() services(NULL), corporations(NULL), traffcounter(NULL), + errorStr(), + smuxSettings(), + settings(), + thread(), + mutex(), running(false), stopped(true), sock(-1), @@ -209,8 +216,6 @@ int SMUX::Stop() printfd(__FILE__, "SMUX::Stop() - Before\n"); running = false; -ResetNotifiers(); - if (!stopped) { //5 seconds to thread stops itself @@ -236,12 +241,37 @@ if (!stopped) pthread_join(thread, NULL); +ResetNotifiers(); + + { + Tables::iterator it; + for (it = tables.begin(); it != tables.end(); ++it) + delete it->second; + } + { + Sensors::iterator it; + for (it = sensors.begin(); it != sensors.end(); ++it) + delete it->second; + } + +tables.erase(tables.begin(), tables.end()); +sensors.erase(sensors.begin(), sensors.end()); + close(sock); printfd(__FILE__, "SMUX::Stop() - After\n"); return 0; } +int SMUX::Reload() +{ +if (Stop()) + return -1; +if (Start()) + return -1; +return 0; +} + void * SMUX::Runner(void * d) { SMUX * smux = static_cast(d); @@ -253,8 +283,11 @@ return NULL; void SMUX::Run() { -SendOpenPDU(sock); -SendRReqPDU(sock); +stopped = true; +if (!SendOpenPDU(sock)) + return; +if (!SendRReqPDU(sock)) + return; running = true; stopped = false;