X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=5ad2694ad8d2440e7f2cc06cf791985434b3525d;hb=538abdde82f2a1c8f5ce6f27c8ee0e0f71e989a7;hp=fbcd94e8b5241a5a92a8e5350105175e1083fd3a;hpb=20bc8b17d60373c2c93ab6bb777d19dd92ed2960;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index fbcd94e..5ad2694 100644 --- a/src/session.c +++ b/src/session.c @@ -624,7 +624,6 @@ int session_is_preferred_clients_ready(struct session *s) static void session_clear_set(struct session *se, struct reclist_sortparms *sp) { reclist_destroy(se->reclist); - se->reclist = 0; if (nmem_total(se->nmem)) session_log(se, YLOG_DEBUG, "NMEN operation usage %zd", nmem_total(se->nmem)); @@ -965,7 +964,7 @@ struct session *new_session(NMEM nmem, struct conf_service *service, session->number_of_warnings_unknown_elements = 0; session->number_of_warnings_unknown_metadata = 0; session->num_termlists = 0; - session->reclist = 0; + session->reclist = reclist_create(nmem); session->clients_active = 0; session->clients_cached = 0; session->settings_modified = 0; @@ -1207,22 +1206,19 @@ struct record_cluster *show_single_start(struct session *se, const char *id, session_enter(se, "show_single_start"); *prev_r = 0; *next_r = 0; - if (se->reclist) - { - reclist_limit(se->reclist, se); + reclist_limit(se->reclist, se); - reclist_enter(se->reclist); - while ((r = reclist_read_record(se->reclist))) + reclist_enter(se->reclist); + while ((r = reclist_read_record(se->reclist))) + { + if (!strcmp(r->recid, id)) { - if (!strcmp(r->recid, id)) - { - *next_r = reclist_read_record(se->reclist); - break; - } - *prev_r = r; + *next_r = reclist_read_record(se->reclist); + break; } - reclist_leave(se->reclist); + *prev_r = r; } + reclist_leave(se->reclist); if (!r) session_leave(se, "show_single_start"); return r; @@ -1321,9 +1317,7 @@ struct record_cluster **show_range_start(struct session *se, client_update_show_stat(rec->client, 1); } } - if (*num > 0) - recs = - nmem_malloc(se->nmem, *num * sizeof(struct record_cluster *)); + recs = nmem_malloc(se->nmem, (*num > 0 ? *num : 1) * sizeof(*recs)); for (i = 0; i < *num; i++) { struct record_cluster *r = reclist_read_record(se->reclist); @@ -1681,7 +1675,7 @@ int ingest_record(struct client *cl, const char *rec, return -1; } session_enter(se, "ingest_record"); - if (client_get_session(cl) == se) + if (client_get_session(cl) == se && se->relevance) ret = ingest_to_cluster(cl, xdoc, root, record_no, mergekey_norm); session_leave(se, "ingest_record"); @@ -2159,7 +2153,7 @@ void session_log(struct session *s, int level, const char *fmt, ...) va_start(ap, fmt); yaz_vsnprintf(buf, sizeof(buf)-30, fmt, ap); - yaz_log(level, "Session %u: %s", s->session_id, buf); + yaz_log(level, "Session %u: %s", s ? s->session_id : 0, buf); va_end(ap); }