diff options
author | Pierre Carrier <geoffroy.carrier@gmail.com> | 2010-08-23 00:53:40 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2010-08-26 18:23:00 +0200 |
commit | 4b3630b7e7c843add1965b6d35b3f2020957c101 (patch) | |
tree | 43bdc9bfe280b73e802a12d8eeddc9dcf6b6b616 | |
parent | b219bfe699ef9bfa91135808ef2ee192adf0245b (diff) | |
download | samba-4b3630b7e7c843add1965b6d35b3f2020957c101.tar.gz samba-4b3630b7e7c843add1965b6d35b3f2020957c101.tar.bz2 samba-4b3630b7e7c843add1965b6d35b3f2020957c101.zip |
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
-rw-r--r-- | source3/winbindd/winbindd.c | 16 |
1 files changed, 12 insertions, 4 deletions
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; |