diff options
author | Jeremy Allison <jra@samba.org> | 2005-01-11 02:13:03 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:50 -0500 |
commit | 0f0281c2348b10ffdea744ecade6b2be0814c872 (patch) | |
tree | c6bac8fd349db6284dea12e0eb21968225385fb0 /source/libads | |
parent | 5942bb7737fe8efc452d59cda0d6e35e309c97b7 (diff) | |
download | samba-0f0281c2348b10ffdea744ecade6b2be0814c872.tar.gz samba-0f0281c2348b10ffdea744ecade6b2be0814c872.tar.xz samba-0f0281c2348b10ffdea744ecade6b2be0814c872.zip |
r4665: Fix inspired by posting from Joe Meadows <jameadows@webopolis.com>.
Make all LDAP timeouts consistent.
Jeremy.
Diffstat (limited to 'source/libads')
-rw-r--r-- | source/libads/ldap.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/source/libads/ldap.c b/source/libads/ldap.c index 8c37a90e732..494bd930e4e 100644 --- a/source/libads/ldap.c +++ b/source/libads/ldap.c @@ -75,20 +75,24 @@ static int ldap_search_with_timeout(LDAP *ld, int attrsonly, LDAPControl **sctrls, LDAPControl **cctrls, - struct timeval *timeout, int sizelimit, LDAPMessage **res ) { + struct timeval timeout; int result; - /* Setup timeout */ + /* Setup timeout for the ldap_search_ext_s call - local and remote. */ + timeout.tv_sec = lp_ldap_timeout(); + timeout.tv_usec = 0; + + /* Setup alarm timeout.... Do we need both of these ? JRA. */ gotalarm = 0; CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig); alarm(lp_ldap_timeout()); /* End setup timeout. */ result = ldap_search_ext_s(ld, base, scope, filter, attrs, - attrsonly, sctrls, cctrls, timeout, + attrsonly, sctrls, cctrls, &timeout, sizelimit, res); /* Teardown timeout. */ @@ -504,14 +508,14 @@ ADS_STATUS ads_do_paged_search(ADS_STRUCT *ads, const char *bind_path, rc = ldap_search_with_timeout(ads->ld, utf8_path, scope, utf8_expr, search_attrs, 0, controls, - NULL, NULL, LDAP_NO_LIMIT, + NULL, LDAP_NO_LIMIT, (LDAPMessage **)res); ber_free(cookie_be, 1); ber_bvfree(cookie_bv); if (rc) { - DEBUG(3,("ldap_search_with_timeout(%s) -> %s\n", expr, + DEBUG(3,("ads_do_paged_search: ldap_search_with_timeout(%s) -> %s\n", expr, ldap_err2string(rc))); goto done; } @@ -655,7 +659,6 @@ ADS_STATUS ads_do_search(ADS_STRUCT *ads, const char *bind_path, int scope, const char *expr, const char **attrs, void **res) { - struct timeval timeout; int rc; char *utf8_expr, *utf8_path, **search_attrs = NULL; TALLOC_CTX *ctx; @@ -689,15 +692,12 @@ ADS_STATUS ads_do_search(ADS_STRUCT *ads, const char *bind_path, int scope, } } - timeout.tv_sec = ADS_SEARCH_TIMEOUT; - timeout.tv_usec = 0; - /* see the note in ads_do_paged_search - we *must* disable referrals */ ldap_set_option(ads->ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF); rc = ldap_search_with_timeout(ads->ld, utf8_path, scope, utf8_expr, search_attrs, 0, NULL, NULL, - &timeout, LDAP_NO_LIMIT, + LDAP_NO_LIMIT, (LDAPMessage **)res); if (rc == LDAP_SIZELIMIT_EXCEEDED) { |