Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/pazpar2
[pazpar2-moved-to-github.git] / src / client.c
index 61e0a8a..a30355b 100644 (file)
@@ -67,23 +67,26 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include "relevance.h"
 #include "incref.h"
 
-/* client counting (1) , disable client counting (0) */
-#if 1
 static YAZ_MUTEX g_mutex = 0;
 static int no_clients = 0;
 
-static void client_use(int delta)
+static int client_use(int delta)
 {
+    int clients;
     if (!g_mutex)
         yaz_mutex_create(&g_mutex);
     yaz_mutex_enter(g_mutex);
     no_clients += delta;
+    clients = no_clients;
     yaz_mutex_leave(g_mutex);
-    yaz_log(YLOG_DEBUG, "%s clients=%d", delta > 0 ? "INC" : "DEC", no_clients);
+    yaz_log(YLOG_DEBUG, "%s clients=%d", delta == 0 ? "" : (delta > 0 ? "INC" : "DEC"), clients);
+    return clients;
+}
+
+int  clients_count(void) {
+    return client_use(0);
 }
-#else
-#define client_use(x)
-#endif
+
 
 /** \brief Represents client state for a connection to one search target */
 struct client {
@@ -931,7 +934,7 @@ int client_parse_query(struct client *cl, const char *query)
     const char *sru = session_setting_oneval(sdb, PZ_SRU);
     const char *pqf_prefix = session_setting_oneval(sdb, PZ_PQF_PREFIX);
     const char *pqf_strftime = session_setting_oneval(sdb, PZ_PQF_STRFTIME);
-
+    const char *query_syntax = session_setting_oneval(sdb, PZ_QUERY_SYNTAX);
     if (!ccl_map)
         return -1;
 
@@ -975,7 +978,11 @@ int client_parse_query(struct client *cl, const char *query)
     cl->pquery = xstrdup(wrbuf_cstr(se->wrbuf));
 
     xfree(cl->cqlquery);
-    if (*sru)
+
+    /* Support for PQF on SRU targets.
+     * TODO Refactor */
+    yaz_log(YLOG_DEBUG, "Query syntax: %s", query_syntax);
+    if (strcmp(query_syntax, "pqf") != 0 && *sru)
     {
         if (!strcmp(sru, "solr")) {
             if (!(cl->cqlquery = make_solrquery(cl)))