summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2012-05-04 16:52:49 +0200
committerStephen Gallagher <sgallagh@redhat.com>2012-05-10 14:32:29 -0400
commitb47696d3917183b800530ec1e745834579930558 (patch)
treea97810b7e3db8a33fa41486110e18a3657a34acc
parent8e6e00461654827e44d16ff30b810038c99257f7 (diff)
downloadsssd-b47696d3917183b800530ec1e745834579930558.tar.gz
sssd-b47696d3917183b800530ec1e745834579930558.tar.xz
sssd-b47696d3917183b800530ec1e745834579930558.zip
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
-rw-r--r--src/providers/ldap/sdap_async.c13
1 files 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;