diff options
| author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-08-04 20:51:09 +0200 | 
|---|---|---|
| committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-08-04 20:54:19 +0200 | 
| commit | 432e93affce4d5ddcc816f826268bc68d5789756 (patch) | |
| tree | e911e77bb63015bbaee6e81dd12da6a6377d4157 /src/tools/cbr | |
| parent | 502d7b1585edb0ee89cac178f20af8bfdbf5cc64 (diff) | |
| download | ouroboros-432e93affce4d5ddcc816f826268bc68d5789756.tar.gz ouroboros-432e93affce4d5ddcc816f826268bc68d5789756.zip | |
tools: cbr: Fix server cleanup
The server should cleanup whenever the listen thread exits.
Diffstat (limited to 'src/tools/cbr')
| -rw-r--r-- | src/tools/cbr/cbr_server.c | 22 | 
1 files changed, 7 insertions, 15 deletions
| diff --git a/src/tools/cbr/cbr_server.c b/src/tools/cbr/cbr_server.c index 1890c842..fc23363f 100644 --- a/src/tools/cbr/cbr_server.c +++ b/src/tools/cbr/cbr_server.c @@ -47,18 +47,11 @@ pthread_cond_t  fds_signal;  void shutdown_server(int signo, siginfo_t * info, void * c)  { -        int i; -          switch(signo) {          case SIGINT:          case SIGTERM:          case SIGHUP:                  pthread_cancel(listen_thread); - -                for (i = 0; i < THREADS_SIZE; i++) { -                        pthread_cancel(threads[i]); -                } -          default:                  return;          } @@ -226,19 +219,18 @@ int server_main()                  exit(EXIT_FAILURE);          } -        for (i = 0; i < THREADS_SIZE; i++) { -                pthread_create(&threads[i], NULL, -                               worker, NULL); -        } +        for (i = 0; i < THREADS_SIZE; i++) +                pthread_create(&threads[i], NULL, worker, NULL); -        pthread_create(&listen_thread, NULL, -                       listener, NULL); +        pthread_create(&listen_thread, NULL, listener, NULL);          pthread_join(listen_thread, NULL); -        for (i = 0; i < THREADS_SIZE; i++) { +        for (i = 0; i < THREADS_SIZE; i++) +                pthread_cancel(threads[i]); + +        for (i = 0; i < THREADS_SIZE; i++)                  pthread_join(threads[i], NULL); -        }          return 0;  } | 
