Mercurial > dovecot > original-hg > dovecot-1.2
changeset 1233:42f7c4e8e690 HEAD
proper deinit for gnutls proxy too
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 23 Feb 2003 12:53:21 +0200 |
parents | f7da7d46e3f2 |
children | 23f28ecd2c21 |
files | src/login-common/ssl-proxy-gnutls.c |
diffstat | 1 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/login-common/ssl-proxy-gnutls.c Sun Feb 23 12:53:11 2003 +0200 +++ b/src/login-common/ssl-proxy-gnutls.c Sun Feb 23 12:53:21 2003 +0200 @@ -3,6 +3,7 @@ #include "common.h" #include "ioloop.h" #include "network.h" +#include "hash.h" #include "ssl-proxy.h" #ifdef HAVE_GNUTLS @@ -42,6 +43,7 @@ const int cert_type_priority[] = { GNUTLS_CRT_X509, 0 }; +static struct hash_table *ssl_proxies; static gnutls_certificate_credentials x509_cred; static gnutls_dh_params dh_params; static gnutls_rsa_params rsa_params; @@ -122,6 +124,8 @@ if (--proxy->refcount > 0) return TRUE; + hash_remove(ssl_proxies, proxy); + gnutls_deinit(proxy->session); (void)net_disconnect(proxy->fd_ssl); @@ -322,6 +326,7 @@ } main_ref(); + hash_insert(ssl_proxies, proxy, proxy); return sfd[1]; } @@ -501,15 +506,26 @@ if (ret < 0) i_fatal("Can't set RSA parameters: %s", gnutls_strerror(ret)); + ssl_proxies = hash_create(default_pool, default_pool, 0, NULL, NULL); ssl_initialized = TRUE; } +static void ssl_proxy_destroy_hash(void *key __attr_unused__, void *value, + void *context __attr_unused__) +{ + ssl_proxy_destroy(value); +} + void ssl_proxy_deinit(void) { - if (ssl_initialized) { - gnutls_certificate_free_cred(x509_cred); - gnutls_global_deinit(); - } + if (!ssl_initialized) + return; + + hash_foreach(ssl_proxies, ssl_proxy_destroy_hash, NULL); + hash_destroy(ssl_proxies); + + gnutls_certificate_free_cred(x509_cred); + gnutls_global_deinit(); } #endif