]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/other/smux/smux.cpp
Return correct core if stop fails
[stg.git] / projects / stargazer / plugins / other / smux / smux.cpp
index bcfc940e432f146a7fffa4e50c4fac1b526600df..5367e249b00c739fb548d772f852ae9f6789d8f0 100644 (file)
@@ -34,8 +34,10 @@ return a.first.PrefixLess(b.first);
 }
 
 SMUX_SETTINGS::SMUX_SETTINGS()
 }
 
 SMUX_SETTINGS::SMUX_SETTINGS()
-    : ip(0),
-      port(0)
+    : errorStr(),
+      ip(0),
+      port(0),
+      password()
 {}
 
 int SMUX_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
 {}
 
 int SMUX_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
@@ -94,6 +96,11 @@ SMUX::SMUX()
       services(NULL),
       corporations(NULL),
       traffcounter(NULL),
       services(NULL),
       corporations(NULL),
       traffcounter(NULL),
+      errorStr(),
+      smuxSettings(),
+      settings(),
+      thread(),
+      mutex(),
       running(false),
       stopped(true),
       sock(-1),
       running(false),
       stopped(true),
       sock(-1),
@@ -256,8 +263,21 @@ printfd(__FILE__, "SMUX::Stop() - After\n");
 return 0;
 }
 
 return 0;
 }
 
+int SMUX::Reload()
+{
+if (Stop())
+    return -1;
+if (Start())
+    return -1;
+return 0;
+}
+
 void * SMUX::Runner(void * d)
 {
 void * SMUX::Runner(void * d)
 {
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
 SMUX * smux = static_cast<SMUX *>(d);
 
 smux->Run();
 SMUX * smux = static_cast<SMUX *>(d);
 
 smux->Run();
@@ -267,8 +287,11 @@ return NULL;
 
 void SMUX::Run()
 {
 
 void SMUX::Run()
 {
-SendOpenPDU(sock);
-SendRReqPDU(sock);
+stopped = true;
+if (!SendOpenPDU(sock))
+    return;
+if (!SendRReqPDU(sock))
+    return;
 running = true;
 stopped = false;
 
 running = true;
 stopped = false;