user-directory.c revision 14660f677e16a5c36f3c43e9e64f5e021fda627b
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen/* Copyright (c) 2010-2017 Dovecot authors, see the included COPYING file */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen/* n% of timeout_secs */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen/* but min/max. of this many secs */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen/* This shouldn't matter what it is exactly, just try it sometimes later. */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen /* unsigned int username_hash => user */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen /* sorted by time. may be unsorted while handshakes are going on. */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen /* If user's expire time is less than this many seconds away,
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainen don't assume that other directors haven't yet expired it */
c8296ac1ed68ed5c5168de545b76f9b27fc76d35Timo Sirainenstatic void user_move_iters(struct user_directory *dir, struct user *user)
return TRUE;
return TRUE;
return TRUE;
return FALSE;
expire_timestamp = 0;
if (expire_timestamp != 0) {
unsigned int username_hash)
return user;
struct user *
return user;
if (users_count == 0) {
struct user_directory *
return dir;
struct user_directory_iter *
bool iter_until_current_tail)
return iter;
return NULL;
return user;
unsigned int i, count;
for (i = 0; i < count; i++) {