dovecot-1.2: login: Reset idle timeout only when input is actual...

dovecot at dovecot.org dovecot at dovecot.org
Fri Dec 19 09:49:37 EET 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/164569761647
changeset: 8577:164569761647
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Dec 19 09:46:46 2008 +0200
description:
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.

diffstat:

4 files changed, 8 insertions(+), 5 deletions(-)
src/imap-login/client-authenticate.c |    1 -
src/imap-login/client.c              |    6 ++++--
src/pop3-login/client-authenticate.c |    1 -
src/pop3-login/client.c              |    5 ++++-

diffs (70 lines):

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 @@ static void client_auth_failed(struct im
 		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 @@ bool client_read(struct imap_client *cli
 		/* 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 @@ static void client_auth_failed(struct po
 		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 @@ bool client_read(struct pop3_client *cli
 		/* 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 @@ void client_input(struct pop3_client *cl
 
 	i_assert(!client->common.authenticating);
 
-	timeout_reset(client->to_idle_disconnect);
 	if (!client_read(client))
 		return;
 


More information about the dovecot-cvs mailing list