X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=1f55a873594355795c9c01f5025843fe9f466471;hb=21250014e714ebfa123610f04b380d156f63c12e;hp=3e00cc10fa0d9603b76c9ab0bff1a0a4f057a851;hpb=e78a02092641952d74a56396c6d281b225888cd1;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 3e00cc1..1f55a87 100644 --- a/src/session.c +++ b/src/session.c @@ -76,6 +76,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "settings.h" #include "normalize7bit.h" +#include + #define TERMLIST_HIGH_SCORE 25 #define MAX_CHUNK 15 @@ -741,13 +743,13 @@ enum pazpar2_error_code session_search(struct session *se, client_prep_connection(cl, se->service->z3950_operation_timeout, se->service->z3950_session_timeout, se->service->server->iochan_man, - &tval, 0); + &tval); if (parse_ret == 1 && r == 2) { 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); @@ -962,6 +964,7 @@ static struct hitsbytarget *hitsbytarget_nb(struct session *se, res[*count].name = *name ? name : "Unknown"; res[*count].hits = client_get_hits(cl); res[*count].records = client_get_num_records(cl); + res[*count].filtered = client_get_num_records_filtered(cl); res[*count].diagnostic = client_get_diagnostic(cl, &res[*count].addinfo); res[*count].state = client_get_state_str(cl); @@ -1069,7 +1072,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; @@ -1081,6 +1085,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) @@ -1115,6 +1120,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); @@ -1532,8 +1544,7 @@ int ingest_record(struct client *cl, const char *rec, if (!check_record_filter(root, sdb)) { - session_log(se, YLOG_LOG, "Filtered out record no %d from %s", - record_no, sdb->database->id); + session_log(se, YLOG_LOG, "Filtered out record no %d from %s", record_no, sdb->database->id); xmlFreeDoc(xdoc); return -2; }