From: Martin Willi Date: Wed, 14 Dec 2011 15:39:44 +0000 (+0100) Subject: Use IKEv1 specific tasks to close Quick Mode SAs X-Git-Tag: 5.0.0~338^2~9^2~208 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c459dae556f3d858dbde30a3b96924f747c8e6a8;p=thirdparty%2Fstrongswan.git Use IKEv1 specific tasks to close Quick Mode SAs --- diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c index fa07f58768..7b4d16c705 100644 --- a/src/libcharon/sa/ike_sa.c +++ b/src/libcharon/sa/ike_sa.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -1341,10 +1342,17 @@ METHOD(ike_sa_t, rekey_child_sa, status_t, METHOD(ike_sa_t, delete_child_sa, status_t, private_ike_sa_t *this, protocol_id_t protocol, u_int32_t spi) { - child_delete_t *child_delete; + task_t *task; - child_delete = child_delete_create(&this->public, protocol, spi); - this->task_manager->queue_task(this->task_manager, &child_delete->task); + if (this->version == IKEV1) + { + task = (task_t*)quick_delete_create(&this->public, protocol, spi); + } + else + { + task = (task_t*)child_delete_create(&this->public, protocol, spi); + } + this->task_manager->queue_task(this->task_manager, task); return this->task_manager->initiate(this->task_manager); } diff --git a/src/libcharon/sa/task_manager_v1.c b/src/libcharon/sa/task_manager_v1.c index 494fe84c3a..2f905516d1 100755 --- a/src/libcharon/sa/task_manager_v1.c +++ b/src/libcharon/sa/task_manager_v1.c @@ -339,7 +339,7 @@ METHOD(task_manager_t, initiate, status_t, exchange = INFORMATIONAL_V1; new_mid = TRUE; } - if (activate_task(this, TASK_CHILD_DELETE)) + if (activate_task(this, TASK_QUICK_DELETE)) { exchange = INFORMATIONAL_V1; new_mid = TRUE; diff --git a/src/libcharon/sa/tasks/informational.c b/src/libcharon/sa/tasks/informational.c index 5391dd32f3..f0ddad0210 100644 --- a/src/libcharon/sa/tasks/informational.c +++ b/src/libcharon/sa/tasks/informational.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include typedef struct private_informational_t private_informational_t; @@ -104,7 +104,7 @@ METHOD(task_t, process_r, status_t, } else { - this->del = (task_t*)child_delete_create(this->ike_sa, + this->del = (task_t*)quick_delete_create(this->ike_sa, PROTO_NONE, 0); } }