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;