diff options
author | Filip Tehlar <ftehlar@cisco.com> | 2020-10-01 03:08:52 +0000 |
---|---|---|
committer | Beno�t Ganne <bganne@cisco.com> | 2020-10-02 10:46:12 +0000 |
commit | 6614df53509030f1c3faf52512bcd8a9851dec5c (patch) | |
tree | e9dfb8c016afe5ac1f36e57eeb8fffce3d7ece24 /src/plugins | |
parent | eb69648bf8f8839bcc955a43921790c443946eb4 (diff) |
ikev2: fix leaking pending INIT requests
.. when associated profile is deleted.
Type: fix
Change-Id: Ib05831d79b3b58664ee0a930960513fd465373bf
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/ikev2/ikev2.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/ikev2/ikev2.c b/src/plugins/ikev2/ikev2.c index 63e89b5cf5e..bc37b7e0035 100644 --- a/src/plugins/ikev2/ikev2.c +++ b/src/plugins/ikev2/ikev2.c @@ -3471,6 +3471,22 @@ ikev2_cleanup_profile_sessions (ikev2_main_t * km, ikev2_profile_t * p) u32 *sai; u32 *del_sai = 0; + /* *INDENT-OFF* */ + pool_foreach(sa, km->sais, ({ + if (pi == sa->profile_index) + vec_add1 (del_sai, sa - km->sais); + })); + /* *INDENT-ON* */ + + vec_foreach (sai, del_sai) + { + sa = pool_elt_at_index (km->sais, sai[0]); + ikev2_sa_free_all_vec (sa); + hash_unset (km->sa_by_ispi, sa->ispi); + pool_put (km->sais, sa); + } + vec_reset_length (del_sai); + vec_foreach (tkm, km->per_thread_data) { /* *INDENT-OFF* */ |