diff --git a/ChangeLog b/ChangeLog index 8c87a9450..183b41bb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-07-23 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource +initialize]): query + the values for SOGoLDAPQueryLimit and SOGoLDAPQueryTimeout from + the application settings. If set, both limit will influence the + maximum size of the resultsets and the time taken to solve them. + ([LDAPSource -_initLDAPConnection]): initialize the limits. + 2007-07-22 Wolfgang Sourdeau * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -davNamespaces]): added new overriden diff --git a/SoObjects/SOGo/LDAPSource.m b/SoObjects/SOGo/LDAPSource.m index 75fe64d40..eeb0a14af 100644 --- a/SoObjects/SOGo/LDAPSource.m +++ b/SoObjects/SOGo/LDAPSource.m @@ -32,13 +32,21 @@ #import "LDAPSource.h" static NSArray *commonSearchFields; +static int timeLimit; +static int sizeLimit; @implementation LDAPSource + (void) initialize { + NSUserDefaults *ud; + if (!commonSearchFields) { + ud = [NSUserDefaults standardUserDefaults]; + sizeLimit = [ud integerForKey: @"SOGoLDAPQueryLimit"]; + timeLimit = [ud integerForKey: @"SOGoLDAPQueryTimeout"]; + commonSearchFields = [NSArray arrayWithObjects: @"title", @"company", @@ -211,6 +219,10 @@ static NSArray *commonSearchFields; [ldapConnection bindWithMethod: @"simple" binddn: bindDN credentials: password]; + if (sizeLimit > 0) + [ldapConnection setQuerySizeLimit: sizeLimit]; + if (timeLimit > 0) + [ldapConnection setQueryTimeLimit: timeLimit]; } /* user management */ @@ -264,6 +276,8 @@ static NSArray *commonSearchFields; { bindConnection = [[NGLdapConnection alloc] initWithHostName: hostname port: port]; + if (timeLimit > 0) + [ldapConnection setQueryTimeLimit: timeLimit]; if (bindFields) userDN = [self _fetchUserDNForLogin: loginToCheck]; else