]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/other/smux/smux.cpp
Initialize some fields via initializer lists in USER_IMPL and
[stg.git] / projects / stargazer / plugins / other / smux / smux.cpp
index bcfc940e432f146a7fffa4e50c4fac1b526600df..61ed80269f9bf9275460cb451c43d12f8575c761 100644 (file)
@@ -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),
@@ -256,6 +263,15 @@ 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<SMUX *>(d);
@@ -267,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;