]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
mdssvc: fix long running backend queries
authorRalph Boehme <slow@samba.org>
Thu, 23 Mar 2023 15:39:11 +0000 (16:39 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 26 Jul 2023 22:43:38 +0000 (22:43 +0000)
If a query is still running in the backend and we have no results yet, returning
0 triggers a search termination by the client in latest macOS releases. macOS
returns 0x23 in this case.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15342

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/rpc_server/mdssvc/mdssvc.c

index 371282a8206b4bbcf4e19987a915f77332aedfd3..c13fdd7ca71910af942bd279c1c62711cc227022 100644 (file)
@@ -306,10 +306,21 @@ static bool create_result_handle(struct sl_query *slq)
 static bool add_results(sl_array_t *array, struct sl_query *slq)
 {
        sl_filemeta_t *fm;
-       uint64_t status = 0;
+       uint64_t status;
        int result;
        bool ok;
 
+       /*
+        * Taken from a network trace against a macOS SMB Spotlight server. If
+        * the first fetch-query-results has no results yet because the search
+        * is still running, macOS returns 0x23, otherwise 0x0.
+        */
+       if (slq->state >= SLQ_STATE_RESULTS ) {
+               status = 0;
+       } else {
+               status = 0x23;
+       }
+
        /* FileMeta */
        fm = dalloc_zero(array, sl_filemeta_t);
        if (fm == NULL) {