Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9658:8ba4253adc9b 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:41:29 +0300 |
parents | d6bd9acd97e7 |
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 Fri Oct 05 00:26:19 2012 +0300 +++ b/src/imap-login/client.c Thu May 08 16:41:29 2014 +0300 @@ -557,6 +557,8 @@ client_unlink(&client->common); + if (!client->login_success && client->common.proxy != NULL) + ssl_proxy_destroy(client->common.proxy); if (client->common.input != NULL) i_stream_close(client->common.input); if (client->output != NULL)
--- a/src/login-common/ssl-proxy-openssl.c Fri Oct 05 00:26:19 2012 +0300 +++ b/src/login-common/ssl-proxy-openssl.c Thu May 08 16:41:29 2014 +0300 @@ -80,7 +80,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) @@ -676,7 +675,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 Fri Oct 05 00:26:19 2012 +0300 +++ b/src/login-common/ssl-proxy.c Thu May 08 16:41:29 2014 +0300 @@ -55,6 +55,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 Fri Oct 05 00:26:19 2012 +0300 +++ b/src/login-common/ssl-proxy.h Thu May 08 16:41:29 2014 +0300 @@ -24,6 +24,7 @@ bool ssl_proxy_is_handshaked(const struct ssl_proxy *proxy) ATTR_PURE; const char *ssl_proxy_get_last_error(const struct ssl_proxy *proxy) ATTR_PURE; 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 Fri Oct 05 00:26:19 2012 +0300 +++ b/src/pop3-login/client.c Thu May 08 16:41: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->common.input != NULL) i_stream_close(client->common.input); if (client->output != NULL)