summaryrefslogtreecommitdiff
path: root/source3/libads/ldap_utils.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-05-18 22:01:14 +1000
committerJeremy Allison <jra@samba.org>2012-05-26 02:03:08 +0200
commit0da10c842e06e98cf94482b654b87ff5991344ae (patch)
treefe55f0fb094ce6f6a44b59d4f292a959475be0ea /source3/libads/ldap_utils.c
parentb9217a8c0032c10b898a4f1ca0ed8d38f39c39a1 (diff)
downloadsamba-0da10c842e06e98cf94482b654b87ff5991344ae.tar.gz
samba-0da10c842e06e98cf94482b654b87ff5991344ae.tar.bz2
samba-0da10c842e06e98cf94482b654b87ff5991344ae.zip
s3-libads: Use a reducing page size to try and cope with a slow LDAP server
If we cannot get 1000 users downloaded in 15seconds, try with 500, 250 and then 125 users at a time. Andrew Bartlett Signed-off-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/libads/ldap_utils.c')
-rw-r--r--source3/libads/ldap_utils.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source3/libads/ldap_utils.c b/source3/libads/ldap_utils.c
index 2f1c1b8e0a..8a4b452b87 100644
--- a/source3/libads/ldap_utils.c
+++ b/source3/libads/ldap_utils.c
@@ -84,6 +84,13 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind
while (--count) {
+ if (NT_STATUS_EQUAL(ads_ntstatus(status), NT_STATUS_IO_TIMEOUT) && ads->config.ldap_page_size >= 250) {
+ int new_page_size = (ads->config.ldap_page_size / 2);
+ DEBUG(1, ("Reducing LDAP page size from %d to %d due to IO_TIMEOUT\n",
+ ads->config.ldap_page_size, new_page_size));
+ ads->config.ldap_page_size = new_page_size;
+ }
+
if (*res)
ads_msgfree(ads, *res);
*res = NULL;