--- embedaddon/strongswan/src/libcharon/sa/trap_manager.c 2020/06/03 09:46:45 1.1 +++ embedaddon/strongswan/src/libcharon/sa/trap_manager.c 2021/03/17 00:20:09 1.1.1.2 @@ -509,7 +509,7 @@ METHOD(trap_manager_t, acquire, void, if (wildcard) { /* the peer config would match IKE_SAs with other peers */ - ike_sa = charon->ike_sa_manager->checkout_new(charon->ike_sa_manager, + ike_sa = charon->ike_sa_manager->create_new(charon->ike_sa_manager, peer->get_ike_version(peer), TRUE); if (ike_sa) { @@ -538,12 +538,10 @@ METHOD(trap_manager_t, acquire, void, ike_sa = charon->ike_sa_manager->checkout_by_config( charon->ike_sa_manager, peer); } + peer->destroy(peer); + if (ike_sa) { - if (ike_sa->get_peer_cfg(ike_sa) == NULL) - { - ike_sa->set_peer_cfg(ike_sa, peer); - } if (this->ignore_acquire_ts || ike_sa->get_version(ike_sa) == IKEV1) { /* in IKEv1, don't prepend the acquiring packet TS, as we only * have a single TS that we can establish in a Quick Mode. */ @@ -572,7 +570,6 @@ METHOD(trap_manager_t, acquire, void, destroy_acquire(acquire); child->destroy(child); } - peer->destroy(peer); } /**