diff options
author | Günther Deschner <gd@samba.org> | 2006-09-18 19:26:09 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:52:01 -0500 |
commit | 245aa33f0d0ccbc55c3ed86ea4417b7358aedccb (patch) | |
tree | db388662781af17ae3c563b552e71f5c97bd0e11 | |
parent | a812e2d7db1294950e05977d5000f3d9889aefb6 (diff) | |
download | samba-245aa33f0d0ccbc55c3ed86ea4417b7358aedccb.tar.gz samba-245aa33f0d0ccbc55c3ed86ea4417b7358aedccb.tar.bz2 samba-245aa33f0d0ccbc55c3ed86ea4417b7358aedccb.zip |
r18620: Fallback to non-paging LDAP searches in ads_do_search_retry_internal()
for anonymous bound connections.
When doing anonymous bind you can never use paged LDAP control for
RootDSE searches on AD.
Guenther
(This used to be commit dc1d92faabd4b291f607eb481349ba37e52ef11e)
-rw-r--r-- | source3/libads/ldap_utils.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/source3/libads/ldap_utils.c b/source3/libads/ldap_utils.c index 9559ae117a..e6855674d1 100644 --- a/source3/libads/ldap_utils.c +++ b/source3/libads/ldap_utils.c @@ -50,7 +50,15 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind } *res = NULL; - status = ads_do_search_all_args(ads, bp, scope, expr, attrs, args, res); + + /* when binding anonymously, we cannot use the paged search LDAP + * control - Guenther */ + + if (ads->auth.flags & ADS_AUTH_ANON_BIND) { + status = ads_do_search(ads, bp, scope, expr, attrs, res); + } else { + status = ads_do_search_all_args(ads, bp, scope, expr, attrs, args, res); + } if (ADS_ERR_OK(status)) { DEBUG(5,("Search for %s gave %d replies\n", expr, ads_count_replies(ads, *res))); @@ -83,7 +91,16 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind } *res = NULL; - status = ads_do_search_all_args(ads, bp, scope, expr, attrs, args, res); + + /* when binding anonymously, we cannot use the paged search LDAP + * control - Guenther */ + + if (ads->auth.flags & ADS_AUTH_ANON_BIND) { + status = ads_do_search(ads, bp, scope, expr, attrs, res); + } else { + status = ads_do_search_all_args(ads, bp, scope, expr, attrs, args, res); + } + if (ADS_ERR_OK(status)) { DEBUG(5,("Search for filter: %s, base: %s gave %d replies\n", expr, bp, ads_count_replies(ads, *res))); |