]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
controller: Immediately return after re-initiating an existing IKE_SA childless
authorTobias Brunner <tobias@strongswan.org>
Wed, 1 Mar 2023 16:31:07 +0000 (17:31 +0100)
committerTobias Brunner <tobias@strongswan.org>
Tue, 21 Mar 2023 15:25:51 +0000 (16:25 +0100)
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

src/libcharon/control/controller.c

index cff504966a5a77956369cb70909d93f8c4d34585..1906a09b69d1b9c2294f7e0a64e47ff1cb3b7664 100644 (file)
@@ -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);
        }