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-07 14:44:23 -0400
commitbca72f5a66f140c3a4190d0ad5dc8b9e96b0b111 (patch)
treef49b2eb2198ce8f8cf0ae424a730c929c6cb5999
parent853399dac6ff2460a35f1631f78996a0c33bc257 (diff)
downloadsssd-bca72f5a66f140c3a4190d0ad5dc8b9e96b0b111.tar.gz
sssd-bca72f5a66f140c3a4190d0ad5dc8b9e96b0b111.tar.xz
sssd-bca72f5a66f140c3a4190d0ad5dc8b9e96b0b111.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 335ffec88..bef4655c6 100644
--- a/src/providers/ldap/sdap_async.c
+++ b/src/providers/ldap/sdap_async.c
@@ -1286,10 +1286,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;