From b71604011abac37aa139feaa8c0f71fe3f844632 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Wed, 28 Nov 2018 14:54:31 +0100 Subject: [PATCH] ike-sa: Expose task_manager_t::remove_task() --- src/libcharon/sa/ike_sa.c | 7 +++++++ src/libcharon/sa/ike_sa.h | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c index 3cc645e662..cbd170398c 100644 --- a/src/libcharon/sa/ike_sa.c +++ b/src/libcharon/sa/ike_sa.c @@ -2721,6 +2721,12 @@ METHOD(ike_sa_t, create_task_enumerator, enumerator_t*, return this->task_manager->create_task_enumerator(this->task_manager, queue); } +METHOD(ike_sa_t, remove_task, void, + private_ike_sa_t *this, enumerator_t *enumerator) +{ + return this->task_manager->remove_task(this->task_manager, enumerator); +} + METHOD(ike_sa_t, flush_queue, void, private_ike_sa_t *this, task_queue_t queue) { @@ -3063,6 +3069,7 @@ ike_sa_t * ike_sa_create(ike_sa_id_t *ike_sa_id, bool initiator, .create_attribute_enumerator = _create_attribute_enumerator, .set_kmaddress = _set_kmaddress, .create_task_enumerator = _create_task_enumerator, + .remove_task = _remove_task, .flush_queue = _flush_queue, .queue_task = _queue_task, .queue_task_delayed = _queue_task_delayed, diff --git a/src/libcharon/sa/ike_sa.h b/src/libcharon/sa/ike_sa.h index bfec009812..be480eac86 100644 --- a/src/libcharon/sa/ike_sa.h +++ b/src/libcharon/sa/ike_sa.h @@ -1124,6 +1124,16 @@ struct ike_sa_t { */ enumerator_t* (*create_task_enumerator)(ike_sa_t *this, task_queue_t queue); + /** + * Remove the task the given enumerator points to. + * + * @note This should be used with caution, in partciular, for tasks in the + * active and passive queues. + * + * @param enumerator enumerator created with the method above + */ + void (*remove_task)(ike_sa_t *this, enumerator_t *enumerator); + /** * Flush a task queue, cancelling all tasks in it. * -- 2.39.2