From 7ce504e182c1ce1cde7c80e7dfe2a70b3e5dbed4 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 21 May 2012 14:17:09 +0200 Subject: Flush task queues explicitly, not implicitly if task returns ALREADY_DONE --- src/libcharon/sa/ikev1/tasks/quick_mode.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/libcharon/sa/ikev1/tasks/quick_mode.c') diff --git a/src/libcharon/sa/ikev1/tasks/quick_mode.c b/src/libcharon/sa/ikev1/tasks/quick_mode.c index f98bfa2b6..7c843e85e 100644 --- a/src/libcharon/sa/ikev1/tasks/quick_mode.c +++ b/src/libcharon/sa/ikev1/tasks/quick_mode.c @@ -605,6 +605,8 @@ static status_t send_notify(private_quick_mode_t *this, notify_type_t type) this->ike_sa->queue_task(this->ike_sa, (task_t*)informational_create(this->ike_sa, notify)); /* cancel all active/passive tasks in favour of informational */ + this->ike_sa->flush_queue(this->ike_sa, + this->initiator ? TASK_QUEUE_ACTIVE : TASK_QUEUE_PASSIVE); return ALREADY_DONE; } @@ -892,6 +894,7 @@ METHOD(task_t, process_r, status_t, } if (!install(this)) { + this->ike_sa->flush_queue(this->ike_sa, TASK_QUEUE_PASSIVE); this->ike_sa->queue_task(this->ike_sa, (task_t*)quick_delete_create(this->ike_sa, this->proposal->get_protocol(this->proposal), -- cgit v1.2.3