From: Tobias Brunner Date: Wed, 1 Mar 2023 16:31:07 +0000 (+0100) Subject: controller: Immediately return after re-initiating an existing IKE_SA childless X-Git-Tag: 5.9.11dr1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6a354a996c800eeebad0dbe40c6f0d38c6f7a06;p=thirdparty%2Fstrongswan.git controller: Immediately return after re-initiating an existing IKE_SA childless If no CHILD_SA is initiated, we wait for a state change to IKE_ESTABLISHED but that will never happen for already established IKE_SAs. References strongswan/strongswan#1553 --- diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c index cff504966a..1906a09b69 100644 --- a/src/libcharon/control/controller.c +++ b/src/libcharon/control/controller.c @@ -475,9 +475,13 @@ METHOD(job_t, initiate_execute, job_requeue_t, if (ike_sa->initiate(ike_sa, listener->child_cfg, NULL) == SUCCESS) { - if (!listener->logger.callback) - { + if (!listener->logger.callback || + (!listener->child_cfg && + ike_sa->get_state(ike_sa) != IKE_CONNECTING)) + { /* immediately return if we don't block or after re-initiating an + * existing IKE_SA childless */ listener->status = SUCCESS; + listener_done(listener); } charon->ike_sa_manager->checkin(charon->ike_sa_manager, ike_sa); }