diff --git a/server/src/receive.c b/server/src/receive.c index 378311073..4338fae19 100644 --- a/server/src/receive.c +++ b/server/src/receive.c @@ -55,6 +55,8 @@ int main(int argc, char *argv[]) struct config_t config; + _mtid = pthread_self(); + while ((c = getopt(argc, argv, "hr")) != -1) { switch (c) { case 'r': reverse = 1; break; diff --git a/server/src/send.c b/server/src/send.c index a4f841e7a..4a3aca59c 100644 --- a/server/src/send.c +++ b/server/src/send.c @@ -54,6 +54,8 @@ int main(int argc, char *argv[]) { char c; int reverse = 0; + + _mtid = pthread_self(); struct config_t config; diff --git a/server/src/test.c b/server/src/test.c index 2deec58bf..bcdf4be7a 100644 --- a/server/src/test.c +++ b/server/src/test.c @@ -61,6 +61,8 @@ void quit(int sig, siginfo_t *si, void *ptr) int main(int argc, char *argv[]) { config_t config; + + _mtid = pthread_self(); if (argc < 4) { printf("Usage: %s CONFIG TEST NODE [ARGS]\n", argv[0]); diff --git a/server/src/utils.c b/server/src/utils.c index f77d3862f..e06856b3f 100644 --- a/server/src/utils.c +++ b/server/src/utils.c @@ -14,6 +14,7 @@ #include #include #include +#include #ifdef ENABLE_OPAL_ASYNC #define RTLAB @@ -28,7 +29,10 @@ pthread_t _mtid; void die() { - pthread_kill(_mtid, SIGINT); + if (pthread_equal(_mtid, pthread_self())) + exit(EXIT_FAILURE); + else + pthread_kill(_mtid, SIGINT); } int strap(char *dest, size_t size, const char *fmt, ...)