Show command may re-search for targets that support it
[pazpar2-moved-to-github.git] / src / http_command.c
index 088a502..9874653 100644 (file)
@@ -898,6 +898,7 @@ static void show_records(struct http_channel *c, int active)
         error(rs, PAZPAR2_MALFORMED_PARAMETER_VALUE, "sort");
         release_session(c, s);
         return;
+
     }
 
     
@@ -950,13 +951,26 @@ static void cmd_show(struct http_channel *c)
     struct http_request *rq = c->request;
     struct http_session *s = locate_session(c);
     const char *block = http_argbyname(rq, "block");
+    const char *sort = http_argbyname(rq, "sort");
+    struct reclist_sortparms *sp;
     int status;
 
     if (!s)
         return;
 
+    if (!sort)
+        sort = "relevance";
+    
     status = session_active_clients(s->psession);
 
+    if (!(sp = reclist_parse_sortparms(c->nmem, sort, s->psession->service)))
+    {
+        error(c->response, PAZPAR2_MALFORMED_PARAMETER_VALUE, "sort");
+        release_session(c, s);
+        return;
+    }
+    search_sort(s->psession, sp->name, sp->increasing);
+
     if (block)
     {
         if (!strcmp(block, "preferred") && !session_is_preferred_clients_ready(s->psession) && reclist_get_num_records(s->psession->reclist) == 0)