summaryrefslogtreecommitdiff
path: root/src/libcharon/control/controller.c
diff options
context:
space:
mode:
authorYves-Alexis Perez <corsac@debian.org>2013-08-25 15:37:27 +0200
committerYves-Alexis Perez <corsac@debian.org>2013-08-25 15:37:27 +0200
commitc7307e752d8f47c68f834e22ee2ce0a14a70e695 (patch)
treefbb442a20ab54aad511b46a070e65b8d09c22791 /src/libcharon/control/controller.c
parentf74c6d77c3efb529e7403eeef0613c061eb895b3 (diff)
parent6b99c8d9cff7b3e8ae8f3204b99e7ea40f791349 (diff)
downloadvyos-strongswan-c7307e752d8f47c68f834e22ee2ce0a14a70e695.tar.gz
vyos-strongswan-c7307e752d8f47c68f834e22ee2ce0a14a70e695.zip
Merge tag 'upstream/5.1.0'
Upstream version 5.1.0
Diffstat (limited to 'src/libcharon/control/controller.c')
-rw-r--r--src/libcharon/control/controller.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c
index 0ee99c4b7..c546da544 100644
--- a/src/libcharon/control/controller.c
+++ b/src/libcharon/control/controller.c
@@ -412,6 +412,7 @@ METHOD(controller_t, initiate, status_t,
.refcount = 1,
);
job->listener.logger.listener = &job->listener;
+ thread_cleanup_push((void*)destroy_job, job);
if (callback == NULL)
{
@@ -425,7 +426,7 @@ METHOD(controller_t, initiate, status_t,
}
}
status = job->listener.status;
- destroy_job(job);
+ thread_cleanup_pop(TRUE);
return status;
}
@@ -500,6 +501,7 @@ METHOD(controller_t, terminate_ike, status_t,
.refcount = 1,
);
job->listener.logger.listener = &job->listener;
+ thread_cleanup_push((void*)destroy_job, job);
if (callback == NULL)
{
@@ -513,7 +515,7 @@ METHOD(controller_t, terminate_ike, status_t,
}
}
status = job->listener.status;
- destroy_job(job);
+ thread_cleanup_pop(TRUE);
return status;
}
@@ -615,6 +617,7 @@ METHOD(controller_t, terminate_child, status_t,
.refcount = 1,
);
job->listener.logger.listener = &job->listener;
+ thread_cleanup_push((void*)destroy_job, job);
if (callback == NULL)
{
@@ -628,7 +631,7 @@ METHOD(controller_t, terminate_child, status_t,
}
}
status = job->listener.status;
- destroy_job(job);
+ thread_cleanup_pop(TRUE);
return status;
}