From d83ff884d0c35724b5c3df10a5fd62030a36a66f Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 3 Dec 2018 15:59:13 +0200 Subject: [PATCH] login-proxy: Fix potential crash for delayed disconnects This happens only with login_proxy_max_disconnect_delay. Fixes: Panic: file ioloop.c: line 86 (io_add): assertion failed: (fd >= 0) --- src/login-common/login-proxy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 5ca0cbe825..71fa31881b 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -414,6 +414,7 @@ static void login_proxy_free_final(struct login_proxy *proxy) io_remove(&proxy->client_wait_io); i_stream_destroy(&proxy->client_input); o_stream_destroy(&proxy->client_output); + client_unref(&proxy->client); i_free(proxy->host); i_free(proxy); } @@ -517,6 +518,8 @@ login_proxy_free_full(struct login_proxy **_proxy, const char *reason, if (proxy->callback != NULL) proxy->callback(proxy->client); } + client->login_proxy = NULL; + if (delay_ms == 0) login_proxy_free_final(proxy); else { @@ -524,9 +527,6 @@ login_proxy_free_full(struct login_proxy **_proxy, const char *reason, proxy->client_wait_io = io_add_istream(proxy->client_input, proxy_client_disconnected_input, proxy); } - - client->login_proxy = NULL; - client_unref(&client); } static void ATTR_NULL(2) -- 2.47.3