重构key keeper创建keyring的代码。修复除 #97 外的valgrind definitely lost。
This commit is contained in:
@@ -50,11 +50,11 @@ static void keyring_set_key(struct keyring_private* kyr, EVP_PKEY *key)
|
||||
static void keyring_set_cert(struct keyring_private* kry, X509 *cert)
|
||||
{
|
||||
pthread_mutex_lock(&kry->mutex);
|
||||
if ((kry->head).cert)
|
||||
if (kry->head.cert)
|
||||
{
|
||||
X509_free((kry->head).cert);
|
||||
}
|
||||
(kry->head).cert = cert;
|
||||
kry->head.cert = cert;
|
||||
if (cert)
|
||||
{
|
||||
ssl_x509_refcount_inc((kry->head).cert);
|
||||
@@ -64,24 +64,24 @@ static void keyring_set_cert(struct keyring_private* kry, X509 *cert)
|
||||
|
||||
static void keyring_set_chain(struct keyring_private* kyr, STACK_OF(X509) *chain)
|
||||
{
|
||||
pthread_mutex_lock(&kyr->mutex);
|
||||
if ((kyr->head).chain)
|
||||
pthread_mutex_lock(&(kyr->mutex));
|
||||
if (kyr->head.chain)
|
||||
{
|
||||
sk_X509_pop_free((kyr->head).chain, X509_free);
|
||||
sk_X509_pop_free(kyr->head.chain, X509_free);
|
||||
}
|
||||
if (chain)
|
||||
{
|
||||
(kyr->head).chain = sk_X509_dup(chain);
|
||||
kyr->head.chain = sk_X509_dup(chain);
|
||||
int i = 0;
|
||||
for (i = 0; i < sk_X509_num((kyr->head).chain); i++)
|
||||
for (i = 0; i < sk_X509_num(kyr->head.chain); i++)
|
||||
{
|
||||
ssl_x509_refcount_inc(sk_X509_value((kyr->head).chain, i));
|
||||
ssl_x509_refcount_inc(sk_X509_value(kyr->head.chain, i));
|
||||
}
|
||||
} else
|
||||
{
|
||||
(kyr->head).chain = NULL;
|
||||
kyr->head.chain = NULL;
|
||||
}
|
||||
pthread_mutex_unlock(&kyr->mutex);
|
||||
pthread_mutex_unlock(&(kyr->mutex));
|
||||
}
|
||||
|
||||
static X509* transform_cert_to_x509(const char* str)
|
||||
|
||||
Reference in New Issue
Block a user