[dovecot-cvs] dovecot/src/login-common ssl-proxy-gnutls.c,1.2,1.3
cras at procontrol.fi
cras at procontrol.fi
Sun Feb 23 12:53:23 EET 2003
Update of /home/cvs/dovecot/src/login-common
In directory danu:/tmp/cvs-serv15234
Modified Files:
ssl-proxy-gnutls.c
Log Message:
proper deinit for gnutls proxy too
Index: ssl-proxy-gnutls.c
===================================================================
RCS file: /home/cvs/dovecot/src/login-common/ssl-proxy-gnutls.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- ssl-proxy-gnutls.c 8 Feb 2003 14:09:27 -0000 1.2
+++ ssl-proxy-gnutls.c 23 Feb 2003 10:53:21 -0000 1.3
@@ -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
More information about the dovecot-cvs
mailing list