Sync OpenBSD patchset 316:

Only redraw all clients once when the backoff timer expires rather than every
second all the time.

Reported by Simon Nicolussi.
pull/1/head
Tiago Cunha 2009-09-05 19:03:41 +00:00
parent 02c4760ace
commit bb2d57dcbf
2 changed files with 7 additions and 5 deletions

View File

@ -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);

View File

@ -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. */