aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2015-11-06 09:18:44 +0100
committerTobias Brunner <tobias@strongswan.org>2015-11-09 15:18:37 +0100
commit1d528cfb8d6f0ee411b545ad07ace44876afe2ff (patch)
tree4735ac684108debc0b1d9331873062dd880ca2f7
parentf7234e5e9f05b17d6d602612d9ee6277ba89e672 (diff)
downloadstrongswan-1d528cfb8d6f0ee411b545ad07ace44876afe2ff.tar.bz2
strongswan-1d528cfb8d6f0ee411b545ad07ace44876afe2ff.tar.xz
ike-sa-manager: Signal waiting threads after check out/in for uniqueness check
Fixes 758b1caa0e75 ("ikev1: Prevent deadlock when checking for duplicate IKEv1 SAs")
-rw-r--r--src/libcharon/sa/ike_sa_manager.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
index 9ebdae7f6..4adf22c15 100644
--- a/src/libcharon/sa/ike_sa_manager.c
+++ b/src/libcharon/sa/ike_sa_manager.c
@@ -1646,6 +1646,9 @@ METHOD(ike_sa_manager_t, checkin, void,
* need for a lookup via get_entry_by... */
lock_single_segment(this, segment);
entry->checked_out = FALSE;
+ /* We already signaled waiting threads above, we have to do that
+ * again after checking the SA out and back in again. */
+ entry->condvar->signal(entry->condvar);
}
}