From 6434fc94a9c3fb9623a09f16493dbaf723346dc4 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 23 Jul 2007 19:04:54 +0000 Subject: [PATCH] Monotone-Parent: 3d920991e042a031e499189cfc46e35d8309ae68 Monotone-Revision: c3db91d7b98f4667ce24b3d38e6bd68d32909d57 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-07-23T19:04:54 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 8 ++++++++ SoObjects/SOGo/LDAPSource.m | 14 ++++++++++++++ 2 files changed, 22 insertions(+) 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