diff --git a/server-fn.c b/server-fn.c index 2390236b..9b7ba907 100644 --- a/server-fn.c +++ b/server-fn.c @@ -1,4 +1,4 @@ -/* $Id: server-fn.c,v 1.85 2009-09-03 20:54:39 tcunha Exp $ */ +/* $Id: server-fn.c,v 1.86 2009-09-05 19:03:41 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -234,8 +234,8 @@ server_unlock(const char *s) return (0); wrong: - password_backoff = server_activity; password_failures++; + password_backoff = 0; for (i = 0; i < ARRAY_LENGTH(&clients); i++) { c = ARRAY_ITEM(&clients, i); @@ -266,7 +266,8 @@ wrong: #endif failures = password_failures % tries; if (failures > backoff) { - password_backoff += ((failures - backoff) * tries / 2); + password_backoff = + server_activity + ((failures - backoff) * tries / 2); return (-2); } return (-1); diff --git a/server.c b/server.c index 470316fc..4f1517da 100644 --- a/server.c +++ b/server.c @@ -1,4 +1,4 @@ -/* $Id: server.c,v 1.179 2009-09-04 20:27:06 tcunha Exp $ */ +/* $Id: server.c,v 1.180 2009-09-05 19:03:41 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -1213,11 +1213,12 @@ server_second_timers(void) } } - if (t > password_backoff) { + if (password_backoff != 0 && t >= password_backoff) { for (i = 0; i < ARRAY_LENGTH(&clients); i++) { if ((c = ARRAY_ITEM(&clients, i)) != NULL) server_redraw_client(c); } + password_backoff = 0; } /* Check for a minute having passed. */