From 826513851fad77bd524af7271846c8f048eedc2d Mon Sep 17 00:00:00 2001 From: Noriko Hosoi Date: Dec 10 2015 19:18:16 +0000 Subject: Ticket #48375 - SimplePagedResults -- in the search error case, simple paged results slot was not released. Description: If a simple paged results search fails in the backend, the simple paged results slot was not released. This patch adds it. https://fedorahosted.org/389/ticket/48375 Reviewed by tbordaz@redhat.com (Thank you, Thierry!!) (cherry picked from commit 5a54717bfa40e3ef987bd85c5806125e49b2b278) (cherry picked from commit b91aad03b660aea85cb745554f27101c690f8402) (cherry picked from commit 44acc45e3c525b997f46cac06f9723694634a131) --- diff --git a/ldap/servers/slapd/opshared.c b/ldap/servers/slapd/opshared.c index 391d1c3..e73ac6e 100644 --- a/ldap/servers/slapd/opshared.c +++ b/ldap/servers/slapd/opshared.c @@ -839,15 +839,26 @@ op_shared_search (Slapi_PBlock *pb, int send_result) * wait the end of the loop to send back this error */ flag_no_such_object = 1; - break; + } else { + /* err something other than LDAP_NO_SUCH_OBJECT, so the backend will + * have sent the result - + * Set a flag here so we don't return another result. */ + sent_result = 1; } - /* err something other than LDAP_NO_SUCH_OBJECT, so the backend will - * have sent the result - - * Set a flag here so we don't return another result. */ - sent_result = 1; /* fall through */ case -1: /* an error occurred */ + /* PAGED RESULTS */ + if (op_is_pagedresults(operation)) { + /* cleanup the slot */ + PR_Lock(pb->pb_conn->c_mutex); + pagedresults_set_search_result(pb->pb_conn, operation, NULL, 1, pr_idx); + rc = pagedresults_set_current_be(pb->pb_conn, NULL, pr_idx, 1); + PR_Unlock(pb->pb_conn->c_mutex); + } + if (1 == flag_no_such_object) { + break; + } slapi_pblock_get(pb, SLAPI_RESULT_CODE, &err); if (err == LDAP_NO_SUCH_OBJECT) {