diff options
-rw-r--r-- | src/libcharon/plugins/duplicheck/duplicheck_listener.c | 15 |
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; } |