From: Timo Sirainen Date: Tue, 14 May 2013 11:00:21 +0000 (+0300) Subject: login-proxy: Don't crash if connect() succeeds but login fails with timeout. X-Git-Tag: 2.2.2~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a438f1cb934e221fc3af4e172d609d19c7aab30;p=thirdparty%2Fdovecot%2Fcore.git login-proxy: Don't crash if connect() succeeds but login fails with timeout. --- diff --git a/src/login-common/login-proxy-state.h b/src/login-common/login-proxy-state.h index 65e8fbbc71..eb08e6bf1a 100644 --- a/src/login-common/login-proxy-state.h +++ b/src/login-common/login-proxy-state.h @@ -6,8 +6,9 @@ struct login_proxy_record { struct ip_addr ip; unsigned int port; - unsigned int num_waiting_connections; + /* these are tracking connect()s, not necessarily logins: */ + unsigned int num_waiting_connections; struct timeval last_failure; struct timeval last_success; }; diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 9290883420..1fdb2cf7f4 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -254,7 +254,8 @@ static void proxy_connect_timeout(struct login_proxy *proxy) { errno = ETIMEDOUT; proxy_log_connect_error(proxy); - proxy_fail_connect(proxy); + if (!proxy->connected) + proxy_fail_connect(proxy); login_proxy_free(&proxy); }