From da5e7bdb4c7d4430e342adc0871faec73af67ba2 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 7 Apr 2008 08:44:43 +0000 Subject: [PATCH] try to cache the same instance of equal certificates --- src/charon/credentials/sets/cert_cache.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/charon/credentials/sets/cert_cache.c b/src/charon/credentials/sets/cert_cache.c index 188d2662e..e6c2cf99e 100644 --- a/src/charon/credentials/sets/cert_cache.c +++ b/src/charon/credentials/sets/cert_cache.c @@ -118,11 +118,24 @@ static bool issued_by(private_cert_cache_t *this, enumerator = this->relations->create_enumerator(this->relations); while (enumerator->enumerate(enumerator, ¤t)) { - if (current->subject == subject && current->issuer == issuer) + bool match = FALSE; + + /* check for equal certificates */ + if (subject->equals(subject, current->subject)) { - current->last_use = time(NULL); - found = current; - break; + match = TRUE; + subject = current->subject; + } + if (issuer->equals(issuer, current->issuer)) + { + issuer = current->issuer; + /* if both certs match, we already have a relation */ + if (match) + { + current->last_use = time(NULL); + found = current; + break; + } } } enumerator->destroy(enumerator);