projects
/
pazpar2-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Describe pz:limitmap
[pazpar2-moved-to-github.git]
/
src
/
session.c
diff --git
a/src/session.c
b/src/session.c
index
6002a80
..
2adb1eb
100644
(file)
--- a/
src/session.c
+++ b/
src/session.c
@@
-594,6
+594,7
@@
enum pazpar2_error_code search(struct session *se,
const char *query,
const char *startrecs, const char *maxrecs,
const char *filter,
const char *query,
const char *startrecs, const char *maxrecs,
const char *filter,
+ const char *limit,
const char **addinfo)
{
int live_channels = 0;
const char **addinfo)
{
int live_channels = 0;
@@
-601,6
+602,7
@@
enum pazpar2_error_code search(struct session *se,
int no_failed = 0;
struct client_list *l;
struct timeval tval;
int no_failed = 0;
struct client_list *l;
struct timeval tval;
+ facet_limits_t facet_limits;
session_log(se, YLOG_DEBUG, "Search");
session_log(se, YLOG_DEBUG, "Search");
@@
-627,6
+629,13
@@
enum pazpar2_error_code search(struct session *se,
tval.tv_sec += 5;
tval.tv_sec += 5;
+ facet_limits = facet_limits_create(limit);
+ if (!facet_limits)
+ {
+ *addinfo = "limit";
+ session_leave(se);
+ return PAZPAR2_MALFORMED_PARAMETER_VALUE;
+ }
for (l = se->clients; l; l = l->next)
{
struct client *cl = l->client;
for (l = se->clients; l; l = l->next)
{
struct client *cl = l->client;
@@
-637,7
+646,7
@@
enum pazpar2_error_code search(struct session *se,
client_set_startrecs(cl, atoi(startrecs));
if (prepare_session_database(se, client_get_database(cl)) < 0)
;
client_set_startrecs(cl, atoi(startrecs));
if (prepare_session_database(se, client_get_database(cl)) < 0)
;
- else if (client_parse_query(cl, query) < 0)
+ else if (client_parse_query(cl, query, facet_limits) < 0)
no_failed++;
else
{
no_failed++;
else
{
@@
-649,6
+658,7
@@
enum pazpar2_error_code search(struct session *se,
client_start_search(cl);
}
}
client_start_search(cl);
}
}
+ facet_limits_destroy(facet_limits);
session_leave(se);
if (no_working == 0)
{
session_leave(se);
if (no_working == 0)
{
@@
-772,7
+782,6
@@
void session_destroy(struct session *se) {
nmem_destroy(se->nmem);
service_destroy(se->service);
yaz_mutex_destroy(&se->session_mutex);
nmem_destroy(se->nmem);
service_destroy(se->service);
yaz_mutex_destroy(&se->session_mutex);
- wrbuf_destroy(se->wrbuf);
}
/* Depreciated: use session_destroy */
}
/* Depreciated: use session_destroy */
@@
-815,7
+824,6
@@
struct session *new_session(NMEM nmem, struct conf_service *service,
session->clients = 0;
session->session_nmem = nmem;
session->nmem = nmem_create();
session->clients = 0;
session->session_nmem = nmem;
session->nmem = nmem_create();
- session->wrbuf = wrbuf_alloc();
session->databases = 0;
for (i = 0; i <= SESSION_WATCH_MAX; i++)
{
session->databases = 0;
for (i = 0; i <= SESSION_WATCH_MAX; i++)
{