]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-proxy: Don't crash if connect() succeeds but login fails with timeout.
authorTimo Sirainen <tss@iki.fi>
Tue, 14 May 2013 11:00:21 +0000 (14:00 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 14 May 2013 11:00:21 +0000 (14:00 +0300)
src/login-common/login-proxy-state.h
src/login-common/login-proxy.c

index 65e8fbbc71ca2ad699a9633ed54f7871f3a6e470..eb08e6bf1aeaea466ece101c621534cd78fe245e 100644 (file)
@@ -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;
 };
index 9290883420fdeb19bb0311dadbdf2ea24d56a6dd..1fdb2cf7f4dc1d82a9b404c99aad47ab4aac6669 100644 (file)
@@ -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);
 }