aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/network/sender.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcharon/network/sender.c')
-rw-r--r--src/libcharon/network/sender.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libcharon/network/sender.c b/src/libcharon/network/sender.c
index 4df930b15..6d5ad8f2a 100644
--- a/src/libcharon/network/sender.c
+++ b/src/libcharon/network/sender.c
@@ -149,7 +149,7 @@ static job_requeue_t send_packets(private_sender_t * this)
return JOB_REQUEUE_DIRECT;
}
-METHOD(sender_t, destroy, void,
+METHOD(sender_t, flush, void,
private_sender_t *this)
{
/* send all packets in the queue */
@@ -159,8 +159,13 @@ METHOD(sender_t, destroy, void,
this->sent->wait(this->sent, this->mutex);
}
this->mutex->unlock(this->mutex);
+}
+
+METHOD(sender_t, destroy, void,
+ private_sender_t *this)
+{
this->job->cancel(this->job);
- this->list->destroy(this->list);
+ this->list->destroy_offset(this->list, offsetof(packet_t, destroy));
this->got->destroy(this->got);
this->sent->destroy(this->sent);
this->mutex->destroy(this->mutex);
@@ -177,6 +182,7 @@ sender_t * sender_create()
INIT(this,
.public = {
.send = _send_,
+ .flush = _flush,
.destroy = _destroy,
},
.list = linked_list_create(),