>From 5df31c800f92675dee00cc4c55a30ce4d6f14f1f Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 4 May 2012 16:52:49 +0200 Subject: [PATCH] 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 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c index fb5c8902e1d272f8475809e1a2bbb256536bf12a..d505772c0a48b0c2c6ed28fb6f28cb678df50c6f 100644 --- a/src/providers/ldap/sdap_async.c +++ b/src/providers/ldap/sdap_async.c @@ -1288,10 +1288,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; -- 1.7.7.6