X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fclient.c;h=5db30180f854cb5e81d4a035d91c47606f847314;hb=cd65f5a5853900e62ff5dd53796606cb9de70906;hp=1c537339737c775902fcd33c52c89f15dbc58c0f;hpb=186e99a6b10f92bf994322f4f3eacd64f56c1a13;p=pazpar2-moved-to-github.git diff --git a/src/client.c b/src/client.c index 1c53733..5db3018 100644 --- a/src/client.c +++ b/src/client.c @@ -1518,6 +1518,9 @@ int client_parse_query(struct client *cl, const char *query, if (!ccl_map) return -3; + xfree(cl->cqlquery); + cl->cqlquery = 0; + w_ccl = wrbuf_alloc(); wrbuf_puts(w_ccl, query); @@ -1530,7 +1533,15 @@ int client_parse_query(struct client *cl, const char *query, if (apply_limit(cl, facet_limits, w_pqf, ccl_map, service)) { + client_set_state(cl, Client_Error); ccl_qual_rm(&ccl_map); + + wrbuf_destroy(w_ccl); + wrbuf_destroy(w_pqf); + + xfree(cl->pquery); + cl->pquery = 0; + return -2; } @@ -1551,6 +1562,10 @@ int client_parse_query(struct client *cl, const char *query, wrbuf_cstr(w_ccl)); wrbuf_destroy(w_ccl); wrbuf_destroy(w_pqf); + + xfree(cl->pquery); + cl->pquery = 0; + return -1; } wrbuf_destroy(w_ccl); @@ -1592,14 +1607,10 @@ int client_parse_query(struct client *cl, const char *query, } wrbuf_destroy(w_pqf); - xfree(cl->cqlquery); - cl->cqlquery = 0; - odr_out = odr_createmem(ODR_ENCODE); zquery = p_query_rpn(odr_out, cl->pquery); if (!zquery) { - session_log(se, YLOG_WARN, "Invalid PQF query for Client %s: %s", client_get_id(cl), cl->pquery); ret_value = -1;