aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libcharon/plugins/duplicheck/duplicheck_listener.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/libcharon/plugins/duplicheck/duplicheck_listener.c b/src/libcharon/plugins/duplicheck/duplicheck_listener.c
index 0902a6714..194208485 100644
--- a/src/libcharon/plugins/duplicheck/duplicheck_listener.c
+++ b/src/libcharon/plugins/duplicheck/duplicheck_listener.c
@@ -137,11 +137,6 @@ METHOD(listener_t, ike_updown, bool,
else
{
this->mutex->lock(this->mutex);
- entry = this->active->remove(this->active, id);
- if (entry)
- {
- entry_destroy(entry);
- }
entry = this->checking->remove(this->checking, id);
this->mutex->unlock(this->mutex);
if (entry)
@@ -150,6 +145,16 @@ METHOD(listener_t, ike_updown, bool,
"keeping new IKE_SA", id);
entry_destroy(entry);
}
+ else
+ {
+ this->mutex->lock(this->mutex);
+ entry = this->active->remove(this->active, id);
+ this->mutex->unlock(this->mutex);
+ if (entry)
+ {
+ entry_destroy(entry);
+ }
+ }
}
return TRUE;
}