X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=16b7146e8f1881999b7eb229339fc3f52dfabe71;hb=0287b115b413448cc038c36b21d0b73a77b40976;hp=4beed61085632faeaaf443e9b17a4a4f8d090d70;hpb=c7ce18b91b4b542af4f02ad9fa3f86f12b92f3d1;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 4beed61..16b7146 100644 --- a/src/session.c +++ b/src/session.c @@ -648,11 +648,9 @@ void session_sort(struct session *se, const char *field, int increasing) for (l = se->clients_active; l; l = l->next) { struct client *cl = l->client; - struct timeval tval; - if (client_prep_connection(cl, se->service->z3950_operation_timeout, - se->service->z3950_session_timeout, - se->service->server->iochan_man, - &tval)) + if (client_get_state(cl) == Client_Connecting || + client_get_state(cl) == Client_Idle || + client_get_state(cl) == Client_Working) client_start_search(cl); } session_leave(se); @@ -749,7 +747,7 @@ enum pazpar2_error_code session_search(struct session *se, session_log(se, YLOG_LOG, "client REUSE %s", client_get_id(cl)); client_reingest(cl); } - else + else if (r) { session_log(se, YLOG_LOG, "client NEW %s", client_get_id(cl)); client_start_search(cl); @@ -1071,7 +1069,8 @@ void perform_termlist(struct http_channel *c, struct session *se, for (j = 0; j < num_names; j++) { const char *tname; - + int must_generate_empty = 1; /* bug 5350 */ + for (i = 0; i < se->num_termlists; i++) { tname = se->termlists[i].name; @@ -1083,6 +1082,7 @@ void perform_termlist(struct http_channel *c, struct session *se, wrbuf_puts(c->wrbuf, "wrbuf, tname); wrbuf_puts(c->wrbuf, "\">\n"); + must_generate_empty = 0; p = termlist_highscore(se->termlists[i].termlist, &len); if (p) @@ -1117,6 +1117,13 @@ void perform_termlist(struct http_channel *c, struct session *se, targets_termlist_nb(c->wrbuf, se, num, c->nmem); wrbuf_puts(c->wrbuf, "\n"); + must_generate_empty = 0; + } + if (must_generate_empty) + { + wrbuf_puts(c->wrbuf, "wrbuf, names[j]); + wrbuf_puts(c->wrbuf, "\"/>\n"); } } session_leave(se);