From: Timo Sirainen Date: Thu, 3 Sep 2015 22:23:28 +0000 (+0300) Subject: login proxy: Code cleanup - separate login_proxy_free_final() X-Git-Tag: 2.2.19.rc1~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d87f5ce4f01e465f60ee76c717667095523259bf;p=thirdparty%2Fdovecot%2Fcore.git login proxy: Code cleanup - separate login_proxy_free_final() --- diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 42058df2e6..03147c6f5b 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -419,6 +419,18 @@ static void login_proxy_disconnect(struct login_proxy *proxy) net_disconnect(proxy->server_fd); } +static void login_proxy_free_final(struct login_proxy *proxy) +{ + if (proxy->client_output != NULL) + o_stream_destroy(&proxy->client_output); + if (proxy->client_fd != -1) + net_disconnect(proxy->client_fd); + if (proxy->ssl_server_proxy != NULL) + ssl_proxy_free(&proxy->ssl_server_proxy); + i_free(proxy->host); + i_free(proxy); +} + static void ATTR_NULL(2) login_proxy_free_reason(struct login_proxy **_proxy, const char *reason) { @@ -447,23 +459,17 @@ login_proxy_free_reason(struct login_proxy **_proxy, const char *reason) if (proxy->client_io != NULL) io_remove(&proxy->client_io); - if (proxy->client_output != NULL) - o_stream_destroy(&proxy->client_output); - net_disconnect(proxy->client_fd); } else { i_assert(proxy->client_io == NULL); i_assert(proxy->client_output == NULL); + i_assert(proxy->client_fd == -1); DLLIST_REMOVE(&login_proxies_pending, proxy); if (proxy->callback != NULL) proxy->callback(proxy->client); } - - if (proxy->ssl_server_proxy != NULL) - ssl_proxy_free(&proxy->ssl_server_proxy); - i_free(proxy->host); - i_free(proxy); + login_proxy_free_final(proxy); client->login_proxy = NULL; client_unref(&client);