diff options
Diffstat (limited to 'Source/charon/ike_sa_manager.c')
-rw-r--r-- | Source/charon/ike_sa_manager.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Source/charon/ike_sa_manager.c b/Source/charon/ike_sa_manager.c index 3cbd07225..a3011b315 100644 --- a/Source/charon/ike_sa_manager.c +++ b/Source/charon/ike_sa_manager.c @@ -214,11 +214,20 @@ static status_t get_entry_by_id(private_ike_sa_manager_t *this, ike_sa_id_t *ike /* default status */ status = NOT_FOUND; + while (iterator->has_next(iterator)) { ike_sa_entry_t *current; bool are_equal = FALSE; iterator->current(iterator, (void**)¤t); + if (current->ike_sa_id->get_responder_spi(current->ike_sa_id) == 0) { + if (current->ike_sa_id->get_initiator_spi(current->ike_sa_id) == ike_sa_id->get_initiator_spi(ike_sa_id)) + { + *entry = current; + status = SUCCESS; + break; + } + } current->ike_sa_id->equals(current->ike_sa_id, ike_sa_id, &are_equal); if (are_equal) { |