diff options
-rw-r--r-- | src/charon/processing/processor.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/charon/processing/processor.c b/src/charon/processing/processor.c index bfae7bdff..e14679b14 100644 --- a/src/charon/processing/processor.c +++ b/src/charon/processing/processor.c @@ -193,11 +193,13 @@ static void set_threads(private_processor_t *this, u_int count) static void destroy(private_processor_t *this) { set_threads(this, 0); + pthread_mutex_lock(&this->mutex); while (this->total_threads > 0) { pthread_cond_broadcast(&this->condvar); pthread_cond_wait(&this->condvar, &this->mutex); } + pthread_mutex_unlock(&this->mutex); this->list->destroy_offset(this->list, offsetof(job_t, destroy)); free(this); } |