X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=16b7146e8f1881999b7eb229339fc3f52dfabe71;hb=0287b115b413448cc038c36b21d0b73a77b40976;hp=78aad616886117ce0b2fd7344a8378224c75d5aa;hpb=116eaa2065a4b4fec0dcc55985170e3364132995;p=pazpar2-moved-to-github.git
diff --git a/src/session.c b/src/session.c
index 78aad61..16b7146 100644
--- a/src/session.c
+++ b/src/session.c
@@ -648,12 +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;
- int ret = client_prep_connection(cl, se->service->z3950_operation_timeout,
- se->service->z3950_session_timeout,
- se->service->server->iochan_man,
- &tval, 1);
- if (ret)
+ 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);
@@ -744,13 +741,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);
@@ -1072,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;
@@ -1084,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)
@@ -1118,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);