s3-libads: Use a reducing page size to try and cope with a slow LDAP server
[samba.git] / source3 / libads / ads_struct.c
index 8cc2f1215e24fe8a616b92b8addc8b6bff64518b..2d9ea17faac8147c44e988359ddea3a40cc32ff3 100644 (file)
@@ -57,12 +57,17 @@ char *ads_build_path(const char *realm, const char *sep, const char *field, int
                strlcat(ret, p, len);
        
                while ((p=strtok_r(NULL, sep, &saveptr)) != NULL) {
-                       char *s;
+                       int retval;
+                       char *s = NULL;
                        if (reverse)
-                               asprintf(&s, "%s%s,%s", field, p, ret);
+                               retval = asprintf(&s, "%s%s,%s", field, p, ret);
                        else
-                               asprintf(&s, "%s,%s%s", ret, field, p);
+                               retval = asprintf(&s, "%s,%s%s", ret, field, p);
                        free(ret);
+                       if (retval == -1) {
+                               free(r);
+                               return NULL;
+                       }
                        ret = SMB_STRDUP(s);
                        free(s);
                }
@@ -143,6 +148,10 @@ ADS_STRUCT *ads_init(const char *realm,
 
        ads->auth.flags = wrap_flags;
 
+       /* Start with a page size of 1000 when the connection is new,
+        * we will drop it by half we get a timeout.   */
+       ads->config.ldap_page_size     = 1000;
+
        return ads;
 }