From: Adam Dickmeiss Date: Sun, 8 Aug 2010 19:17:57 +0000 (+0200) Subject: Change check live connections check - show 'watch'. X-Git-Tag: v1.4.4~7 X-Git-Url: http://lists.indexdata.dk/?a=commitdiff_plain;h=40da7ed5f74bb4ad3bbce81943622bc2cd9ab524;p=pazpar2-moved-to-github.git Change check live connections check - show 'watch'. client_set_state only signals SESSION_WATCH_SHOW if client changes state from being active to inactive (and all clients in session are now inactive). --- diff --git a/src/client.c b/src/client.c index d9c2287..5a73db2 100644 --- a/src/client.c +++ b/src/client.c @@ -136,10 +136,14 @@ enum client_state client_get_state(struct client *cl) void client_set_state(struct client *cl, enum client_state st) { + int was_active = 0; + if (client_is_active(cl)) + was_active = 1; cl->state = st; - /* no need to check for all client being non-active if this one - already is. Note that session_active_clients also LOCKS session */ - if (!client_is_active(cl) && cl->session) + /* If client is going from being active to inactive and all clients + are now idle we fire a watch for the session . The assumption is + that session is not mutex locked if client is already active */ + if (was_active && !client_is_active(cl) && cl->session) { int no_active = session_active_clients(cl->session); if (no_active == 0)