X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fclient.c;h=ada96989ff53eaf8369aab602a4853995ec9b061;hb=e2020001fd52f6cbfa51e6ef8706236d1c74aa3d;hp=fad815c5b960dda83fc6f20549e87607c8a22a9d;hpb=ab3a2f3941c1ee8d0c1332901d96cb1e751edbfd;p=pazpar2-moved-to-github.git diff --git a/src/client.c b/src/client.c index fad815c..ada9698 100644 --- a/src/client.c +++ b/src/client.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2010 Index Data + Copyright (C) 2006-2011 Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -103,6 +103,8 @@ struct client { ZOOM_resultset resultset; YAZ_MUTEX mutex; int ref_count; + /* copy of database->url */ + char *url; }; struct show_raw { @@ -592,6 +594,10 @@ static int client_set_facets_request(struct client *cl, ZOOM_connection link) struct session_database *sdb = client_get_database(cl); const char *opt_facet_term_sort = session_setting_oneval(sdb, PZ_TERMLIST_TERM_SORT); const char *opt_facet_term_count = session_setting_oneval(sdb, PZ_TERMLIST_TERM_COUNT); + + /* Future record filtering on target */ + /* const char *opt_facet_record_filter = session_setting_oneval(sdb, PZ_RECORDFILTER); */ + /* Disable when no count is set */ /* TODO Verify: Do we need to reset the ZOOM facets if a ZOOM Connection is being reused??? */ if (opt_facet_term_count && *opt_facet_term_count) @@ -749,6 +755,7 @@ struct client *client_create(void) pazpar2_mutex_create(&cl->mutex, "client"); cl->preferred = 0; cl->ref_count = 1; + cl->url = 0; client_use(1); return cl; @@ -783,6 +790,7 @@ int client_destroy(struct client *c) c->pquery = 0; xfree(c->cqlquery); c->cqlquery = 0; + xfree(c->url); assert(!c->connection); if (c->resultset) @@ -1044,6 +1052,10 @@ int client_get_diagnostic(struct client *cl) void client_set_database(struct client *cl, struct session_database *db) { cl->database = db; + /* Copy the URL for safe logging even after session is gone */ + if (db) { + cl->url = xstrdup(db->database->url); + } } struct host *client_get_host(struct client *cl) @@ -1053,9 +1065,10 @@ struct host *client_get_host(struct client *cl) const char *client_get_url(struct client *cl) { - if (cl->database) - return client_get_database(cl)->database->url; + if (cl->url) + return cl->url; else + /* This must not happen anymore, as the url is present until destruction of client */ return "NOURL"; } @@ -1064,6 +1077,11 @@ void client_set_maxrecs(struct client *cl, int v) cl->maxrecs = v; } +int client_get_maxrecs(struct client *cl) +{ + return cl->maxrecs; +} + void client_set_startrecs(struct client *cl, int v) { cl->startrecs = v;