LDAP SDK differences should really be pushed down into APR-Util. In fact your option #1 would probably be the way to go as long as it was implemented in apr_ldap.h.in and you implemented APR_HAS_ZOS_LDAPSDK that is determined during configure time just like the other SDKs. The #define should also be prefixed with APR_. Unfortunately this creates a version dependancy between HTTPD and APR-Util. This is OK for trunk but a problem for 2.2. The release of APR-Util and HTTPD would have to be coordinated. The fallback is to patch util_ldap.c in some way that doesn't alter the way that the other platforms or SDKs are currently working.
Brad >>> On 2/28/2007 at 8:26 AM, in message <[EMAIL PROTECTED]>, "David Jones" <[EMAIL PROTECTED]> wrote: > Sorry for the delay. > We use our own z/OS specific SDK. There is also a Tivoli SDK , [see Eric > Covener's appends and > http://issues.apache.org/bugzilla/attachment.cgi?id=19394 waiting for > input], which shares some commonality with z/OS (Tivoli can accept the -1 > without a problem, but it acts like 0). > > Thoughts are: > > > 1) LDAP_HAS_ZOS_LDAPSDK isn't an apache define yet. (The Tivoli append adds > a LDAP_HAS_TIVOLI_LDAPSDK to apu-conf.m4, and we would do similar). So if it > shouldn't be put in svn yet skip the top 3 lines and what we're left with > isn't much different than the original hardcoded -1, but at least it puts > some doc in the code about whats going on. > > #ifdef LDAP_HAS_ZOS_LDAPSDK > #define LDAP_LIMIT_VALUE LDAP_NO_LIMIT > #else > #ifdef LDAP_DEFAULT_LIMIT > #define LDAP_LIMIT_VALUE LDAP_DEFAULT_LIMIT > #else > #define LDAP_LIMIT_VALUE -1 /* equivalent to LDAP_DEFAULT_LIMIT */ > #endif > #endif > > 2)Or the flipside, assuming everyone else who defines 0 and not -1 wants to > use 0: > > #ifdef LDAP_HAS_NOVELL_LDAPSDK > #define LDAP_LIMIT_VALUE -1 > #else > #ifdef LDAP_DEFAULT_LIMIT > #define LDAP_LIMIT_VALUE LDAP_DEFAULT_TIME > #else > #ifdef LDAP_NO_LIMIT > #define LDAP_LIMIT_VALUE LDAP_NO_LIMIT > #else > #define LDAP_LIMIT_VALUE -1 > #endif > #endif > #endif > > 3) Or maybe moving it and define a APR_LDAP_DEFAULT_SIZELIMIT instead of > keeping it in util_ldap.c > > 4) Or some complicated(?) conf magic that would involve getting a handle and > then calling ldap_set_option(ldap, LDAP_OPT_SIZELIMIT, -1); and setting > APR_LDAP_DEFAULT_SIZELIMIT to -1 or 0 accordingly. > > > On 2/23/07, Brad Nicholes <[EMAIL PROTECTED]> wrote: >> >> What LDAP client SDK does z/OS use? (Novell, OpenLDAP, Netscape, Other???) >> >> Brad >> >> >>> On 2/22/2007 at 12:52 PM, in message >> <[EMAIL PROTECTED]>, "David >> Jones" >> <[EMAIL PROTECTED]> wrote: >> > Its the z/OS, has LDAP_NO_SIZELIMIT defined. Does not have nor support >> > LDAP_DEFAULT_SIZELIMIT >> > >> > On 2/22/07, Brad Nicholes <[EMAIL PROTECTED]> wrote: >> >> >> >> >>> On 2/22/2007 at 7:12 AM, in message >> >> <[EMAIL PROTECTED]>, "David >> >> Jones" >> >> <[EMAIL PROTECTED]> wrote: >> >> > How about something alone these lines? It assumes there is nobody >> with >> >> > LDAP_DEFAULT_LIMIT undefined AND LDAP_NO_LIMIT defined, but still >> >> supports >> >> > and wishes to use the -1 value. >> >> > >> >> > --- util_ldap.c.defaultlimit Wed Feb 21 16:08:51 2007 >> >> > +++ util_ldap.c.nolimit Thu Feb 15 12:50:09 2007 >> >> > @@ -52,15 +52,9 @@ >> >> > #define LDAP_CA_TYPE_BASE64 2 >> >> > #define LDAP_CA_TYPE_CERT7_DB 3 >> >> > >> >> > -#ifdef LDAP_DEFAULT_LIMIT >> >> > -#define LDAP_LIMIT_VALUE LDAP_DEFAULT_LIMIT >> >> > -#else >> >> > -#ifndef LDAP_NO_LIMIT /* Have neither LDAP_DEFAULT_LIMIT or >> >> LDAP_NO_LIMIT >> >> > */ >> >> > -#define LDAP_LIMIT_VALUE -1 >> >> > -#else /* Have LDAP_NO_LIMIT, but not >> >> LDAP_DEFAULT_LIMIT */ >> >> > -#define LDAP_LIMIT_VALUE LDAP_NO_LIMIT >> >> > -#endif /* !LDAP_NO_LIMIT */ >> >> > -#endif /* LDAP_DEFAULT_LIMIT */ >> >> > +#ifndef LDAP_NO_LIMIT >> >> > +#define LDAP_NO_LIMIT -1 >> >> > +#endif >> >> > >> >> > module AP_MODULE_DECLARE_DATA ldap_module; >> >> > >> >> > @@ -680,7 +674,7 @@ >> >> > /* search for reqdn */ >> >> > if ((result = ldap_search_ext_s(ldc->ldap, (char *)reqdn, >> >> > LDAP_SCOPE_BASE, >> >> > "(objectclass=*)", NULL, 1, >> >> > - NULL, NULL, NULL, >> LDAP_LIMIT_VALUE, >> >> > &res)) >> >> > + NULL, NULL, NULL, LDAP_NO_LIMIT, >> >> &res)) >> >> > == LDAP_SERVER_DOWN) >> >> > { >> >> > ldc->reason = "DN Comparison ldap_search_ext_s() " >> >> > @@ -958,7 +952,7 @@ >> >> > if ((result = ldap_search_ext_s(ldc->ldap, >> >> > (char *)basedn, scope, >> >> > (char *)filter, attrs, 0, >> >> > - NULL, NULL, NULL, >> LDAP_LIMIT_VALUE, >> >> > &res)) >> >> > + NULL, NULL, NULL, LDAP_NO_LIMIT, >> >> &res)) >> >> > == LDAP_SERVER_DOWN) >> >> > { >> >> > ldc->reason = "ldap_search_ext_s() for user failed with >> server >> >> > down"; >> >> > @@ -1198,7 +1192,7 @@ >> >> > if ((result = ldap_search_ext_s(ldc->ldap, >> >> > (char *)basedn, scope, >> >> > (char *)filter, attrs, 0, >> >> > - NULL, NULL, NULL, >> LDAP_LIMIT_VALUE, >> >> > &res)) >> >> > + NULL, NULL, NULL, LDAP_NO_LIMIT, >> >> &res)) >> >> > == LDAP_SERVER_DOWN) >> >> > { >> >> > ldc->reason = "ldap_search_ext_s() for user failed with >> server >> >> > down"; >> >> > >> >> >> >> Maybe I missed this before, but what platform or LDAP SDK does this >> fail >> >> on? The Novell LDAP SDK obviously supports LDAP_DEFAULT_SIZELIMIT (-1) >> and >> >> according to the OpenLDAP source code, it also supports the same >> >> functionality if the value of sizelimit is -1 even though it does not >> >> specifically define LDAP_DEFAULT_SIZELIMIT. I don't know what the >> Netscape >> >> or Microsoft SDKs support other than the fact that we have been passing >> >> those SDKs the same -1 value without a problem. I believe that the >> only >> >> reason why we see the hardcoded -1 rather than a #define is simply >> because >> >> not all of the SDKs provide a #define yet they all seems to support the >> >> functionality. We just need to validate that theory. >> >> >> >> Brad >> >> >> > >> >> >