]> err.no Git - sope/commitdiff
fixed OGo bug #1888
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 23 Jul 2007 18:59:09 +0000 (18:59 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 23 Jul 2007 18:59:09 +0000 (18:59 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1515 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-ldap/NGLdap/ChangeLog
sope-ldap/NGLdap/NGLdapConnection.h
sope-ldap/NGLdap/NGLdapConnection.m
sope-ldap/NGLdap/Version

index fe350a0ac8d2955db96b7481d04a07dba22f128c..e3d281dd92cd87c7eab4e0e5daaa268bb33390c8 100644 (file)
@@ -1,3 +1,12 @@
+2007-07-23  Helge Hess  <helge.hess@opengroupware.org>
+
+       * changed API to use NSTimeInterval, added missing getter methods
+         (v4.7.31)
+
+2007-07-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * added methods to specify query time and size limits (OGo bug #1888)
+
 2006-07-04  Helge Hess  <helge.hess@opengroupware.org>
 
        * use %p for pointer formats, fixed gcc 4.1 warnings, minor code
index 3c1bc0d92a329c32a92ca092618aaac98dc02eda..527bc9b7846b4442c8cd603a10dcc279fe7e1549 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2007 SKYRIX Software AG
 
   This file is part of SOPE.
 
@@ -34,7 +34,8 @@
   void           *handle;
   NSString       *hostName;
   int            port;
-  
+  unsigned int   sizeLimit;
+  NSTimeInterval timeLimit;
   NSTimeInterval cacheTimeout;
   long           cacheMaxMemory; /* in bytes */
   BOOL           isCacheEnabled;
 - (BOOL)bindWithMethod:(NSString *)_method
   binddn:(NSString *)_login credentials:(NSString *)_cred;
 
+/* query parameters */
+
+- (void)setQueryTimeLimit:(NSTimeInterval)_timeLimit;
+- (NSTimeInterval)queryTimeLimit;
+
+- (void)setQuerySizeLimit:(unsigned int)_timeLimit;
+- (unsigned int )querySizeLimit;
+
 /* running queries */
 
 - (NSEnumerator *)flatSearchAtBaseDN:(NSString *)_base
index 1bde62d750eedb127b3be627c6a0201107a9aabd..1d0248d5297a48a64aa3c6196aacc730d6eea35b 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2007 SKYRIX Software AG
 
   This file is part of SOPE.
 
@@ -121,7 +121,9 @@ static void freeMods(LDAPMod **mods) {
   
   [self setCacheTimeout:120.0];
   [self setCacheMaxMemoryUsage:16000];
-  
+  [self setQueryTimeLimit:0.0];
+  [self setQuerySizeLimit:0];
+
   return self;
 }
 - (id)initWithHostName:(NSString *)_hostName {
@@ -287,6 +289,20 @@ static void freeMods(LDAPMod **mods) {
 
 /* running queries */
 
+- (void)setQueryTimeLimit:(NSTimeInterval)_timeLimit {
+  self->timeLimit = _timeLimit;
+}
+- (NSTimeInterval)queryTimeLimit {
+  return self->timeLimit;
+}
+
+- (void)setQuerySizeLimit:(unsigned int)_sizeLimit {
+  self->sizeLimit = _sizeLimit;
+}
+- (unsigned int)querySizeLimit {
+  return self->sizeLimit;
+}
+
 - (NSEnumerator *)_searchAtBaseDN:(NSString *)_base
   qualifier:(EOQualifier *)_q
   attributes:(NSArray *)_attributes
@@ -321,6 +337,18 @@ static void freeMods(LDAPMod **mods) {
            __PRETTY_FUNCTION__, [_base cString], [filter cString],
            [[_attributes description] cString]);
   }
+
+  /* apply limits */
+  
+  if (self->sizeLimit > 0)
+    ldap_set_option(self->handle, LDAP_OPT_SIZELIMIT, &(self->sizeLimit));
+  
+  if (self->timeLimit > 0.0) {
+    int tl = self->timeLimit; /* specified in seconds */
+    ldap_set_option(self->handle, LDAP_OPT_TIMELIMIT, &tl);
+  }
+  
+  /* trigger search */
   
   msgid = ldap_search(self->handle,
                       (char *)[_base UTF8String],
@@ -336,7 +364,7 @@ static void freeMods(LDAPMod **mods) {
     /* trouble */
     return nil;
   }
-  
+
   e = [[NGLdapSearchResultEnumerator alloc]
                                      initWithConnection:self messageID:msgid];
 
index 408c1e6ce45181c6d9d3b902954e89d3e31791d7..b764ae62f0f8ea886626442cd6bcac7f167d7d1f 100644 (file)
@@ -2,4 +2,4 @@
 
 MAJOR_VERSION=4
 MINOR_VERSION=7
-SUBMINOR_VERSION:=30
+SUBMINOR_VERSION:=31