From c10e24e1c77a7ec1e020e2b61900eff05daffa29 Mon Sep 17 00:00:00 2001 From: Uri Simchoni Date: Mon, 13 Jul 2015 21:33:41 +0300 Subject: [PATCH] winbindd: keep client list sorted by access time Keep client list sorted by last access time, newest to oldest. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11397 Signed-off-by: Uri Simchoni Reviewed-by: Jeremy Allison Reviewed-by: Volker Lendecke --- source3/winbindd/winbindd.c | 5 ++--- source3/winbindd/winbindd_util.c | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 66ea68bac9b..620fd3fb8b6 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -701,7 +701,8 @@ static void process_request(struct winbindd_cli_state *state) state->cmd_name = "unknown request"; state->recv_fn = NULL; - state->last_access = time(NULL); + /* client is newest */ + winbindd_promote_client(state); /* Process command */ @@ -930,8 +931,6 @@ static void new_connection(int listen_sock, bool privileged) return; } - state->last_access = time(NULL); - state->privileged = privileged; req = wb_req_read_send(state, winbind_event_context(), state->sock, diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c index 0108504e72a..233b5c97fa8 100644 --- a/source3/winbindd/winbindd_util.c +++ b/source3/winbindd/winbindd_util.c @@ -1225,6 +1225,7 @@ winbindd_client_list_prev(struct winbindd_cli_state *cli) void winbindd_add_client(struct winbindd_cli_state *cli) { + cli->last_access = time(NULL); DLIST_ADD(_client_list, cli); _num_clients++; } @@ -1241,6 +1242,7 @@ void winbindd_remove_client(struct winbindd_cli_state *cli) void winbindd_promote_client(struct winbindd_cli_state *cli) { + cli->last_access = time(NULL); DLIST_PROMOTE(_client_list, cli); } -- 2.11.4.GIT