From b47696d3917183b800530ec1e745834579930558 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 4 May 2012 16:52:49 +0200 Subject: Special-case LDAP_SIZELIMIT_EXCEEDED Previous version of the SSSD did not abort the async LDAP search operation on errors. In cases where the request ended in progress, such as when the paging was very strictly limited, the old versions at least returned partial data. This patch special-cases the LDAP_SIZELIMIT_EXCEEDED error to avoid a user-visible regression. https://fedorahosted.org/sssd/ticket/1322 --- src/providers/ldap/sdap_async.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index ee44bb8fb..acc600a47 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -1284,10 +1284,15 @@ static void sdap_get_generic_ext_done(struct sdap_op *op, sss_ldap_err2string(result), result, errmsg ? errmsg : "no errmsg set")); - if (result != LDAP_SUCCESS && result != LDAP_NO_SUCH_OBJECT) { - DEBUG(2, ("Unexpected result from ldap: %s(%d), %s\n", - sss_ldap_err2string(result), result, - errmsg ? errmsg : "no errmsg set")); + if (result == LDAP_SIZELIMIT_EXCEEDED) { + /* Try to return what we've got */ + DEBUG(SSSDBG_MINOR_FAILURE, + ("LDAP sizelimit was exceeded, returning incomplete data\n")); + } else if (result != LDAP_SUCCESS && result != LDAP_NO_SUCH_OBJECT) { + DEBUG(SSSDBG_OP_FAILURE, + ("Unexpected result from ldap: %s(%d), %s\n", + sss_ldap_err2string(result), result, + errmsg ? errmsg : "no errmsg set")); ldap_memfree(errmsg); tevent_req_error(req, EIO); return; -- cgit