r4665: Fix inspired by posting from Joe Meadows <jameadows@webopolis.com>.
authorJeremy Allison <jra@samba.org>
Tue, 11 Jan 2005 02:13:03 +0000 (02:13 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:53:50 +0000 (10:53 -0500)
Make all LDAP timeouts consistent.
Jeremy.
(This used to be commit 0f0281c2348b10ffdea744ecade6b2be0814c872)

source3/include/ads.h
source3/libads/ldap.c

index de020f2a3f48dd25bb616a4247c9428cf8fc87ac..27f9384d5d00106bf3e3d33a758761dcc3bb8893 100644 (file)
@@ -76,9 +76,6 @@ typedef void **ADS_MODLIST;
 /* time between reconnect attempts */
 #define ADS_RECONNECT_TIME 5
 
-/* timeout on searches */
-#define ADS_SEARCH_TIMEOUT 10
-
 /* ldap control oids */
 #define ADS_PAGE_CTL_OID "1.2.840.113556.1.4.319"
 #define ADS_NO_REFERRALS_OID "1.2.840.113556.1.4.1339"
index 8c37a90e7320f2031279527b5c2254af56d3d058..494bd930e4ea94f2b7adc62c113ea5162528fc5c 100644 (file)
@@ -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) {