aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/sa/ikev1/tasks/quick_mode.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-05-21 14:17:09 +0200
committerMartin Willi <martin@revosec.ch>2012-05-21 14:17:09 +0200
commit7ce504e182c1ce1cde7c80e7dfe2a70b3e5dbed4 (patch)
tree47c862183f50aaeb19340c1fe7130c58c1c9f7bd /src/libcharon/sa/ikev1/tasks/quick_mode.c
parentcbc1a20ffe69fae5ae7fc216873c7ee7d737e103 (diff)
downloadstrongswan-7ce504e182c1ce1cde7c80e7dfe2a70b3e5dbed4.tar.bz2
strongswan-7ce504e182c1ce1cde7c80e7dfe2a70b3e5dbed4.tar.xz
Flush task queues explicitly, not implicitly if task returns ALREADY_DONE
Diffstat (limited to 'src/libcharon/sa/ikev1/tasks/quick_mode.c')
-rw-r--r--src/libcharon/sa/ikev1/tasks/quick_mode.c3
1 files changed, 3 insertions, 0 deletions
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),