X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fclient.c;h=0e7fed5eacaeb1ec00f7c007ea01cf805c98654e;hb=8552f745cef09828177a0defd7cf06d3510649c1;hp=bb5ee3aaae7d36ba0fc017fe181d52fe6e995d39;hpb=6ac6aeb5cf4e8587eee345d31749c004968b5d67;p=pazpar2-moved-to-github.git diff --git a/src/client.c b/src/client.c index bb5ee3a..0e7fed5 100644 --- a/src/client.c +++ b/src/client.c @@ -147,7 +147,9 @@ void client_set_state(struct client *cl, enum client_state st) 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); + yaz_log(YLOG_DEBUG, "%s: releasing watches on zero active: %d", client_get_url(cl), no_active); if (no_active == 0) { session_alert_watch(cl->session, SESSION_WATCH_SHOW); session_alert_watch(cl->session, SESSION_WATCH_SHOW_PREF); @@ -445,16 +447,24 @@ static void ingest_raw_record(struct client *cl, ZOOM_record rec) client_show_raw_dequeue(cl); } -static void client_check_preferred_watch(struct client *cl) +void client_check_preferred_watch(struct client *cl) { struct session *se = cl->session; + yaz_log(YLOG_DEBUG, "client_check_preferred_watch: %s ", client_get_url(cl)); if (se) { client_unlock(cl); - if (session_preferred_clients_ready(se)) + if (session_is_preferred_clients_ready(se)) { session_alert_watch(se, SESSION_WATCH_SHOW_PREF); + } + else + yaz_log(YLOG_DEBUG, "client_check_preferred_watch: Still locked on preferred targets."); + client_lock(cl); } + else + yaz_log(YLOG_WARN, "client_check_preferred_watch: %s. No session!", client_get_url(cl)); + } void client_search_response(struct client *cl) @@ -480,8 +490,6 @@ void client_search_response(struct client *cl) cl->hits = ZOOM_resultset_size(resultset); if (se) se->total_hits += cl->hits; - if (cl->preferred) - client_check_preferred_watch(cl); } } @@ -655,7 +663,8 @@ void client_start_search(struct client *cl) if (opt_preferred) { cl->preferred = atoi(opt_preferred); - yaz_log(YLOG_LOG, "Target %s has preferred: %d", sdb->database->url, cl->preferred); + if (cl->preferred) + yaz_log(YLOG_LOG, "Target %s has preferred status: %d", sdb->database->url, cl->preferred); } client_set_state(cl, Client_Working);