/** * Registers the client and calculates the delay after unsuccessful logins. * * @param client client address * @return delay */ public int block(final byte[] client) { synchronized (blocked) { int delay = blocked.value(client); delay = delay == -1 ? 1 : Math.min(delay, 1024) * 2; blocked.add(client, delay); return delay; } }
/** * Resets the login delay after successful login. * * @param client client address */ public void unblock(final byte[] client) { synchronized (blocked) { blocked.delete(client); } }