diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c index 0c86275e20..3baa9342ad 100644 --- a/src/libcharon/control/controller.c +++ b/src/libcharon/control/controller.c @@ -569,17 +569,17 @@ METHOD(job_t, terminate_ike_execute, job_requeue_t, listener->ike_sa = ike_sa; listener->lock->unlock(listener->lock); + if (!listener->logger.callback) + { /* if we don't wait for the result, either outcome below is a success */ + listener->status = SUCCESS; + } + if (ike_sa->delete(ike_sa, listener->options.force) != DESTROY_ME) { /* delete queued */ - listener->status = FAILED; charon->ike_sa_manager->checkin(charon->ike_sa_manager, ike_sa); } else { - if (!listener->logger.callback) - { - listener->status = SUCCESS; - } charon->ike_sa_manager->checkin_and_destroy(charon->ike_sa_manager, ike_sa); }