ike-sa-manager: Make checkout_by_config() atomic
authorTobias Brunner <tobias@strongswan.org>
Tue, 17 Mar 2020 08:39:17 +0000 (09:39 +0100)
committerTobias Brunner <tobias@strongswan.org>
Fri, 12 Feb 2021 14:49:08 +0000 (15:49 +0100)
commitc46c40ef24ce0f2c60393e19ea62094a0c6957bc
treeb2a3e5b8eb01683f8b1e3be4f9fe2c762e4554a1
parentc7a0f2698d4dadd31b9d9d666cf807275b4d5d08
ike-sa-manager: Make checkout_by_config() atomic

These changes should ensure that concurrent calls to checkout_by_config()
result in a single IKE_SA.  For instance, when acquires for different
children of the same connection are triggered concurrently.

There are two major changes to the interface:

 1) The peer config object is now always set on the returned IKE_SA.
    That was previously only the case if an existing IKE_SA was
    returned.

 2) The IKE_SA is now always registered with the manager and properly
    checked out, which also was only the case for existing IKE_SAs
    before.
src/libcharon/sa/ike_sa_manager.c
src/libcharon/sa/ike_sa_manager.h