From 4b3630b7e7c843add1965b6d35b3f2020957c101 Mon Sep 17 00:00:00 2001 From: Pierre Carrier Date: Mon, 23 Aug 2010 00:53:40 +0100 Subject: winbindd: Add the client status in the clients list output Hello list, Considered relevant by a customer. As I suppose one doesn't send SIGUSR2 very often, I didn't bother adding another DEBUGLEVEL. -- Pierre --- source3/winbindd/winbindd.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'source3/winbindd') diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index a8605340fa..7a9ebb8a82 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -36,6 +36,7 @@ #undef DBGC_CLASS #define DBGC_CLASS DBGC_WINBIND +static bool client_is_idle(struct winbindd_cli_state *state); static void remove_client(struct winbindd_cli_state *state); static bool opt_nocache = False; @@ -95,8 +96,9 @@ static void winbindd_status(void) if (DEBUGLEVEL >= 2 && winbindd_num_clients()) { DEBUG(2, ("\tclient list:\n")); for(tmp = winbindd_client_list(); tmp; tmp = tmp->next) { - DEBUGADD(2, ("\t\tpid %lu, sock %d\n", - (unsigned long)tmp->pid, tmp->sock)); + DEBUGADD(2, ("\t\tpid %lu, sock %d (%s)\n", + (unsigned long)tmp->pid, tmp->sock, + client_is_idle(tmp) ? "idle" : "active")); } } } @@ -858,6 +860,13 @@ static void remove_client(struct winbindd_cli_state *state) TALLOC_FREE(state); } +/* Is a client idle? */ + +static bool client_is_idle(struct winbindd_cli_state *state) { + return (state->response == NULL && + !state->pwent_state && !state->grent_state); +} + /* Shutdown client connection which has been idle for the longest time */ static bool remove_idle_client(void) @@ -867,8 +876,7 @@ static bool remove_idle_client(void) int nidle = 0; for (state = winbindd_client_list(); state; state = state->next) { - if (state->response == NULL && - !state->pwent_state && !state->grent_state) { + if (client_is_idle(state)) { nidle++; if (!last_access || state->last_access < last_access) { last_access = state->last_access; -- cgit