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();
close(sock);
+if (!stopped)
+ {
+ running = true;
+ return -1;
+ }
+
printfd(__FILE__, "SMUX::Stop() - After\n");
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();