[dovecot-cvs] dovecot/src/login-common main.c,1.4,1.5 ssl-proxy-openssl.c,1.3,1.4
cras at procontrol.fi
cras at procontrol.fi
Sun Feb 23 12:45:48 EET 2003
Update of /home/cvs/dovecot/src/login-common
In directory danu:/tmp/cvs-serv32215
Modified Files:
main.c ssl-proxy-openssl.c
Log Message:
Keep list of the SSL proxies, so they're deinitialized properly if we have
to kill them.
Index: main.c
===================================================================
RCS file: /home/cvs/dovecot/src/login-common/main.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- main.c 10 Feb 2003 07:56:23 -0000 1.4
+++ main.c 23 Feb 2003 10:45:46 -0000 1.5
@@ -212,11 +212,11 @@
if (io_listen != NULL) io_remove(io_listen);
if (io_ssl_listen != NULL) io_remove(io_ssl_listen);
+ ssl_proxy_deinit();
+
clients_deinit();
master_deinit();
auth_connection_deinit();
-
- ssl_proxy_deinit();
closelog();
}
Index: ssl-proxy-openssl.c
===================================================================
RCS file: /home/cvs/dovecot/src/login-common/ssl-proxy-openssl.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ssl-proxy-openssl.c 20 Feb 2003 15:48:10 -0000 1.3
+++ ssl-proxy-openssl.c 23 Feb 2003 10:45:46 -0000 1.4
@@ -37,6 +37,7 @@
};
static SSL_CTX *ssl_ctx;
+static struct hash_table *ssl_proxies;
static void plain_read(struct ssl_proxy *proxy);
static void plain_write(struct ssl_proxy *proxy);
@@ -317,6 +318,7 @@
}
main_ref();
+ hash_insert(ssl_proxies, proxy, proxy);
return sfd[1];
}
@@ -325,6 +327,8 @@
if (--proxy->refcount > 0)
return TRUE;
+ hash_remove(ssl_proxies, proxy);
+
SSL_free(proxy->ssl);
(void)net_disconnect(proxy->fd_ssl);
@@ -375,13 +379,25 @@
keyfile, ssl_last_error());
}
+ 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)
- SSL_CTX_free(ssl_ctx);
+ if (!ssl_initialized)
+ return;
+
+ SSL_CTX_free(ssl_ctx);
+
+ hash_foreach(ssl_proxies, ssl_proxy_destroy_hash, NULL);
+ hash_destroy(ssl_proxies);
}
#endif
More information about the dovecot-cvs
mailing list