From 81c63b0eed39432878f78727f60a1e7499645199 Mon Sep 17 00:00:00 2001
From: Yves-Alexis Perez <corsac@debian.org>
Date: Fri, 11 Jul 2014 07:23:31 +0200
Subject: Imported Upstream version 5.2.0

---
 src/libstrongswan/processing/processor.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

(limited to 'src/libstrongswan/processing/processor.c')

diff --git a/src/libstrongswan/processing/processor.c b/src/libstrongswan/processing/processor.c
index 012b169e3..27e5ab5f6 100644
--- a/src/libstrongswan/processing/processor.c
+++ b/src/libstrongswan/processing/processor.c
@@ -467,6 +467,8 @@ METHOD(processor_t, cancel, void,
 {
 	enumerator_t *enumerator;
 	worker_thread_t *worker;
+	job_t *job;
+	int i;
 
 	this->mutex->lock(this->mutex);
 	this->desired_threads = 0;
@@ -496,6 +498,14 @@ METHOD(processor_t, cancel, void,
 		worker->thread->join(worker->thread);
 		free(worker);
 	}
+	for (i = 0; i < JOB_PRIO_MAX; i++)
+	{
+		while (this->jobs[i]->remove_first(this->jobs[i],
+										   (void**)&job) == SUCCESS)
+		{
+			job->destroy(job);
+		}
+	}
 	this->mutex->unlock(this->mutex);
 }
 
@@ -510,7 +520,7 @@ METHOD(processor_t, destroy, void,
 	this->mutex->destroy(this->mutex);
 	for (i = 0; i < JOB_PRIO_MAX; i++)
 	{
-		this->jobs[i]->destroy_offset(this->jobs[i], offsetof(job_t, destroy));
+		this->jobs[i]->destroy(this->jobs[i]);
 	}
 	this->threads->destroy(this->threads);
 	free(this);
-- 
cgit v1.2.3