[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