aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libcharon/sa/ikev1/task_manager_v1.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c
index d71f540fe..3c84b5114 100644
--- a/src/libcharon/sa/ikev1/task_manager_v1.c
+++ b/src/libcharon/sa/ikev1/task_manager_v1.c
@@ -962,6 +962,7 @@ static status_t process_response(private_task_manager_t *this,
message_t *message)
{
enumerator_t *enumerator;
+ message_t *queued;
status_t status;
task_t *task;
@@ -1010,10 +1011,11 @@ static status_t process_response(private_task_manager_t *this,
if (this->queued && this->active_tasks->get_count(this->active_tasks) == 0)
{
- status = this->public.task_manager.process_message(
- &this->public.task_manager, this->queued);
- this->queued->destroy(this->queued);
+ queued = this->queued;
this->queued = NULL;
+ status = this->public.task_manager.process_message(
+ &this->public.task_manager, queued);
+ queued->destroy(queued);
if (status == DESTROY_ME)
{
return status;