Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8577:164569761647 HEAD
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.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 19 Dec 2008 09:46:46 +0200 |
parents | d077e608a2d6 |
children | 729576bb91d8 |
files | src/imap-login/client-authenticate.c src/imap-login/client.c src/pop3-login/client-authenticate.c src/pop3-login/client.c |
diffstat | 4 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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 =
--- 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;
--- 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 =
--- 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;