]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/other/smux/smux.cpp
Allow empty net-router map
[stg.git] / projects / stargazer / plugins / other / smux / smux.cpp
index 61ed80269f9bf9275460cb451c43d12f8575c761..7372948ac8108a5115c078416d8e3f38a337c2bc 100644 (file)
@@ -170,6 +170,7 @@ sensors[OID(".1.3.6.1.4.1.38313.1.1.8")] = new PassiveUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.9")] = new CreditUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.10")] = new FreeMbUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.11")] = new TariffChangeUsersSensor(*users);
+sensors[OID(".1.3.6.1.4.1.38313.1.1.12")] = new ActiveUsersSensor(*users);
 // Tariffs
 sensors[OID(".1.3.6.1.4.1.38313.1.2.1")] = new TotalTariffsSensor(*tariffs);
 // Admins
@@ -224,22 +225,10 @@ if (!stopped)
         struct timespec ts = {0, 200000000};
         nanosleep(&ts, NULL);
         }
-
-    //after 5 seconds waiting thread still running. now killing it
-    if (!stopped)
-        {
-        printfd(__FILE__, "SMUX::Stop() - failed to stop thread, killing it\n");
-        if (pthread_kill(thread, SIGINT))
-            {
-            errorStr = "Cannot kill thread.";
-            printfd(__FILE__, "SMUX::Stop() - Cannot kill thread\n");
-            return -1;
-            }
-        printfd(__FILE__, "SMUX::Stop() -  killed Run\n");
-        }
     }
 
-pthread_join(thread, NULL);
+if (stopped)
+    pthread_join(thread, NULL);
 
 ResetNotifiers();
 
@@ -259,6 +248,12 @@ sensors.erase(sensors.begin(), sensors.end());
 
 close(sock);
 
+if (!stopped)
+    {
+    running = true;
+    return -1;
+    }
+
 printfd(__FILE__, "SMUX::Stop() - After\n");
 return 0;
 }
@@ -274,6 +269,10 @@ return 0;
 
 void * SMUX::Runner(void * d)
 {
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
 SMUX * smux = static_cast<SMUX *>(d);
 
 smux->Run();