diff options
author | Martin Willi <martin@revosec.ch> | 2013-03-07 12:13:26 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2013-03-07 12:17:01 +0100 |
commit | 83e2c81924a622e9c009861ffde2c249156855ec (patch) | |
tree | c7ef6c3bfdeb4a666b44642ef84cc68f20fdbd44 /src/libcharon/control/controller.c | |
parent | 5807f9cfcdd9b85d1dc7baab8ef2e6868b52acfd (diff) | |
download | strongswan-83e2c81924a622e9c009861ffde2c249156855ec.tar.bz2 strongswan-83e2c81924a622e9c009861ffde2c249156855ec.tar.xz |
If controller operations have a callback, don't succeed before hook gets called
Diffstat (limited to 'src/libcharon/control/controller.c')
-rw-r--r-- | src/libcharon/control/controller.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c index 77d73dba9..0ee99c4b7 100644 --- a/src/libcharon/control/controller.c +++ b/src/libcharon/control/controller.c @@ -363,7 +363,10 @@ METHOD(job_t, initiate_execute, job_requeue_t, if (ike_sa->initiate(ike_sa, listener->child_cfg, 0, NULL, NULL) == SUCCESS) { - listener->status = SUCCESS; + if (!listener->logger.callback) + { + listener->status = SUCCESS; + } charon->ike_sa_manager->checkin(charon->ike_sa_manager, ike_sa); } else @@ -454,7 +457,10 @@ METHOD(job_t, terminate_ike_execute, job_requeue_t, } else { - listener->status = SUCCESS; + if (!listener->logger.callback) + { + listener->status = SUCCESS; + } charon->ike_sa_manager->checkin_and_destroy(charon->ike_sa_manager, ike_sa); } @@ -561,7 +567,10 @@ METHOD(job_t, terminate_child_execute, job_requeue_t, if (ike_sa->delete_child_sa(ike_sa, child_sa->get_protocol(child_sa), child_sa->get_spi(child_sa, TRUE), FALSE) != DESTROY_ME) { - listener->status = SUCCESS; + if (!listener->logger.callback) + { + listener->status = SUCCESS; + } charon->ike_sa_manager->checkin(charon->ike_sa_manager, ike_sa); } else @@ -657,4 +666,3 @@ controller_t *controller_create(void) return &this->public; } - |