Avoid blocking record retrieval
[pazpar2-moved-to-github.git] / src / client.c
index 7dc07d8..9a81190 100644 (file)
@@ -237,7 +237,7 @@ static void client_show_immediate(
         error_handler(data, "no resultset");
         return;
     }
-    rec = ZOOM_resultset_record(resultset, position-1);
+    rec = ZOOM_resultset_record_immediate(resultset, position-1);
     if (!rec)
     {
         error_handler(data, "no record");
@@ -580,7 +580,7 @@ static void client_record_ingest(struct client *cl)
     ZOOM_record rec = 0;
     ZOOM_resultset resultset = cl->resultset;
     int offset = cl->record_offset;
-    if ((rec = ZOOM_resultset_record(resultset, offset)))
+    if ((rec = ZOOM_resultset_record_immediate(resultset, offset)))
     {
         cl->record_offset++;
         if (cl->session == 0)
@@ -639,8 +639,8 @@ void client_record_response(struct client *cl)
         if (cl->show_raw && cl->show_raw->active)
         {
             ZOOM_record rec = 0;
-            if ((rec = ZOOM_resultset_record(resultset,
-                                             cl->show_raw->position-1)))
+            if ((rec = ZOOM_resultset_record_immediate(
+                     resultset, cl->show_raw->position-1)))
             {
                 cl->show_raw->active = 0;
                 ingest_raw_record(cl, rec);
@@ -1067,10 +1067,14 @@ const char *client_get_facet_limit_local(struct client *cl,
             if (p && !strcmp(p + 1, name) && s->value &&
                 !strncmp(s->value, "local:", 6))
             {
+                const char *cp = s->value + 6;
+                while (*cp == ' ')
+                    cp++;
+                    
                 nmem_strsplit_escape2(nmem, "|", value, values,
                                       num, 1, '\\', 1);
                 (*l)++;
-                return name;
+                return *cp ? cp : name;
             }
         }
     }