# HG changeset patch # User Timo Sirainen # Date 1229672806 -7200 # Node ID 164569761647644b72d25787a86bf04d7291c5b5 # Parent d077e608a2d6d320545d097187ef9a10639b07a7 login: Reset idle timeout only when input is actually read from client. This prevents client from just sending lots of failed authentication attempts and then doing nothing for hours. diff -r d077e608a2d6 -r 164569761647 src/imap-login/client-authenticate.c --- a/src/imap-login/client-authenticate.c Fri Dec 19 09:37:13 2008 +0200 +++ b/src/imap-login/client-authenticate.c Fri Dec 19 09:46:46 2008 +0200 @@ -115,7 +115,6 @@ AUTH_FAILURE_DELAY_INCREASE_MSECS; if (delay_msecs > CLIENT_LOGIN_IDLE_TIMEOUT_MSECS) delay_msecs = CLIENT_LOGIN_IDLE_TIMEOUT_MSECS - 1000; - timeout_reset(client->to_idle_disconnect); i_assert(client->to_authfail_delay == NULL); client->to_authfail_delay = diff -r d077e608a2d6 -r 164569761647 src/imap-login/client.c --- a/src/imap-login/client.c Fri Dec 19 09:37:13 2008 +0200 +++ b/src/imap-login/client.c Fri Dec 19 09:46:46 2008 +0200 @@ -387,16 +387,18 @@ /* disconnected */ client_destroy(client, "Disconnected"); return FALSE; + case 0: + /* nothing new read */ + return TRUE; default: /* something was read */ + timeout_reset(client->to_idle_disconnect); return TRUE; } } void client_input(struct imap_client *client) { - timeout_reset(client->to_idle_disconnect); - if (!client_read(client)) return; diff -r d077e608a2d6 -r 164569761647 src/pop3-login/client-authenticate.c --- a/src/pop3-login/client-authenticate.c Fri Dec 19 09:37:13 2008 +0200 +++ b/src/pop3-login/client-authenticate.c Fri Dec 19 09:46:46 2008 +0200 @@ -115,7 +115,6 @@ AUTH_FAILURE_DELAY_INCREASE_MSECS; if (delay_msecs > CLIENT_LOGIN_IDLE_TIMEOUT_MSECS) delay_msecs = CLIENT_LOGIN_IDLE_TIMEOUT_MSECS - 1000; - timeout_reset(client->to_idle_disconnect); i_assert(client->to_authfail_delay == NULL); client->to_authfail_delay = diff -r d077e608a2d6 -r 164569761647 src/pop3-login/client.c --- a/src/pop3-login/client.c Fri Dec 19 09:37:13 2008 +0200 +++ b/src/pop3-login/client.c Fri Dec 19 09:46:46 2008 +0200 @@ -179,8 +179,12 @@ /* disconnected */ client_destroy(client, "Disconnected"); return FALSE; + case 0: + /* nothing new read */ + return TRUE; default: /* something was read */ + timeout_reset(client->to_idle_disconnect); return TRUE; } } @@ -191,7 +195,6 @@ i_assert(!client->common.authenticating); - timeout_reset(client->to_idle_disconnect); if (!client_read(client)) return;