From: Ralph Boehme Date: Thu, 23 Mar 2023 15:39:11 +0000 (+0100) Subject: mdssvc: fix long running backend queries X-Git-Tag: ldb-2.8.0~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=925fefae20e52a3c89a56bdd0cd5b98cc951db5f;p=thirdparty%2Fsamba.git mdssvc: fix long running backend queries 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 Reviewed-by: Jeremy Allison --- diff --git a/source3/rpc_server/mdssvc/mdssvc.c b/source3/rpc_server/mdssvc/mdssvc.c index 371282a8206..c13fdd7ca71 100644 --- a/source3/rpc_server/mdssvc/mdssvc.c +++ b/source3/rpc_server/mdssvc/mdssvc.c @@ -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) {