Mercurial > dovecot > original-hg > dovecot-1.1
changeset 8378:fe0e6550585c HEAD tip
*-login: SSL connections didn't get closed when the client got destroyed.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 08 May 2014 16:52:29 +0300 |
parents | 0ce9c27b109b |
children | |
files | src/imap-login/client.c src/login-common/ssl-proxy-openssl.c src/login-common/ssl-proxy.c src/login-common/ssl-proxy.h src/pop3-login/client.c |
diffstat | 5 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap-login/client.c Wed Jun 20 02:21:54 2012 +0300 +++ b/src/imap-login/client.c Thu May 08 16:52:29 2014 +0300 @@ -489,6 +489,8 @@ client_unlink(&client->common); + if (!client->login_success && client->common.proxy != NULL) + ssl_proxy_destroy(client->common.proxy); if (client->input != NULL) i_stream_close(client->input); if (client->output != NULL)
--- a/src/login-common/ssl-proxy-openssl.c Wed Jun 20 02:21:54 2012 +0300 +++ b/src/login-common/ssl-proxy-openssl.c Thu May 08 16:52:29 2014 +0300 @@ -75,7 +75,6 @@ static void ssl_read(struct ssl_proxy *proxy); static void ssl_write(struct ssl_proxy *proxy); static void ssl_step(struct ssl_proxy *proxy); -static void ssl_proxy_destroy(struct ssl_proxy *proxy); static void ssl_proxy_unref(struct ssl_proxy *proxy); static void ssl_params_corrupted(const char *path) @@ -616,7 +615,7 @@ main_unref(); } -static void ssl_proxy_destroy(struct ssl_proxy *proxy) +void ssl_proxy_destroy(struct ssl_proxy *proxy) { if (proxy->destroyed) return;
--- a/src/login-common/ssl-proxy.c Wed Jun 20 02:21:54 2012 +0300 +++ b/src/login-common/ssl-proxy.c Thu May 08 16:52:29 2014 +0300 @@ -46,6 +46,8 @@ return ""; } +void ssl_proxy_destroy(struct ssl_proxy *proxy ATTR_UNUSED) {} + void ssl_proxy_free(struct ssl_proxy *proxy ATTR_UNUSED) {} unsigned int ssl_proxy_get_count(void)
--- a/src/login-common/ssl-proxy.h Wed Jun 20 02:21:54 2012 +0300 +++ b/src/login-common/ssl-proxy.h Thu May 08 16:52:29 2014 +0300 @@ -16,6 +16,7 @@ bool ssl_proxy_is_handshaked(struct ssl_proxy *proxy); const char *ssl_proxy_get_last_error(struct ssl_proxy *proxy); const char *ssl_proxy_get_security_string(struct ssl_proxy *proxy); +void ssl_proxy_destroy(struct ssl_proxy *proxy); void ssl_proxy_free(struct ssl_proxy *proxy); /* Return number of active SSL proxies */
--- a/src/pop3-login/client.c Wed Jun 20 02:21:54 2012 +0300 +++ b/src/pop3-login/client.c Thu May 08 16:52:29 2014 +0300 @@ -359,6 +359,8 @@ client_unlink(&client->common); + if (!client->login_success && client->common.proxy != NULL) + ssl_proxy_destroy(client->common.proxy); if (client->input != NULL) i_stream_close(client->input); if (client->output != NULL)