ldap/servers/slapd/opshared.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
New commits:
commit 5a54717bfa40e3ef987bd85c5806125e49b2b278
Author: Noriko Hosoi <nhosoi(a)redhat.com>
Date: Wed Dec 9 12:05:24 2015 -0800
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(a)redhat.com (Thank you, Thierry!!)
diff --git a/ldap/servers/slapd/opshared.c b/ldap/servers/slapd/opshared.c
index 8a14431..20761d5 100644
--- a/ldap/servers/slapd/opshared.c
+++ b/ldap/servers/slapd/opshared.c
@@ -814,15 +814,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)
{