]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Round 2 of changes from HEAD
authorKurt Zeilenga <kurt@openldap.org>
Sun, 9 Feb 2003 18:01:37 +0000 (18:01 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sun, 9 Feb 2003 18:01:37 +0000 (18:01 +0000)
26 files changed:
clients/tools/common.c
clients/tools/ldapsearch.c
configure
include/ac/assert.h [new file with mode: 0644]
include/ac/bytes.h [new file with mode: 0644]
include/ac/socket.h
include/lber.h
include/ldap.h
include/ldap_config.h.in
include/ldap_config.nt
include/ldap_features.h.in [new file with mode: 0644]
include/ldap_features.nt [new file with mode: 0644]
include/ldap_pvt_thread.h
include/portable.nt
libraries/libldap/Makefile.in
libraries/libldap/compare.c
libraries/libldap/kbind.c
libraries/libldap/open.c
libraries/libldap/os-local.c
libraries/libldap/result.c
libraries/libldap/sasl.c
libraries/libldap/search.c
libraries/libldap/test.c
libraries/libldap/unbind.c
libraries/libldap_r/Makefile.in
libraries/librewrite/var.c

index b4778509422e31a9d30811de9c459ddcbb9c1b58..3b4983336c0b544b48e9949e90db27b6c3b180ad 100644 (file)
@@ -653,7 +653,7 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
        int i = 0, j, crit = 0, err;
        LDAPControl c[3], **ctrls;
 
-       ctrls = (LDAPControl **)malloc( sizeof(c) + (count + 1)*sizeof(LDAPControl *) );
+       ctrls = (LDAPControl**) malloc(sizeof(c) + (count+1)*sizeof(LDAPControl*));
        if ( ctrls == NULL ) {
                fprintf( stderr, "No memory\n" );
                exit( EXIT_FAILURE );
index e65ca0ca3619c607b582299ea69c3e3355e42ab1..ee7611c6a4fc75816eb2e0964c8813c0cd48118b 100644 (file)
@@ -64,6 +64,9 @@ usage( void )
 "  -A         retrieve attribute names only (no values)\n"
 "  -b basedn  base dn for search\n"
 "  -E [!]<ctrl>[=<ctrlparam>] search controls (! indicates criticality)\n"
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+"             [!]domainScope              (domain scope)\n"
+#endif
 "             [!]mv=<filter>              (matched values filter)\n"
 #ifdef LDAP_CONTROL_PAGEDRESULTS
 "             [!]pr=<size>                (paged results)\n"
@@ -72,15 +75,15 @@ usage( void )
 "             [!]subentries[=true|false]  (subentries)\n"
 #endif
 #ifdef LDAP_CLIENT_UPDATE
-"             [!]lcup= p/<cint>/<cookie>/<slimit>  (client update)\n"
+"             [!]lcup=p/<cint>/<cookie>/<slimit> (LDAP client update)\n"
 /*
- * "                      s/<cint>/<cookie>  (client update)\n"
+ * "                      s/<cint>/<cookie>  (LDAP client update)\n"
  * "                     sp/<cint>/<cookie>/<slimit>\n"
  * */
 #endif
 #ifdef LDAP_SYNC
-"             [!]sync= ro[/<cookie>] (ldap sync - refreshOnly)\n"
-"                      rp[/<cookie>][/<slimit>] (ldap sync - refreshAndPersist)\n"
+"             [!]sync=ro[/<cookie>]            (LDAP Sync refreshOnly)\n"
+"                     rp[/<cookie>][/<slimit>] (LDAP Sync refreshAndPersist)\n"
 #endif
 "  -F prefix  URL prefix for files (default: %s)\n"
 "  -l limit   time limit (in seconds) for search\n"
@@ -153,6 +156,10 @@ static int  includeufn, vals2tmp = 0, ldif = 0;
 static int subentries = 0, valuesReturnFilter = 0;
 static char    *vrFilter = NULL;
 
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+static int domainScope = 0;
+#endif
+
 #if defined(LDAP_CLIENT_UPDATE) || defined(LDAP_SYNC)
 static int lcup = 0;
 static int ldapsync = 0;
@@ -289,6 +296,21 @@ handle_private_option( int i )
                        pagedResults = 1 + crit;
 
 #endif
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+               } else if ( strcasecmp( control, "domainScope" ) == 0 ) {
+                       if( domainScope ) {
+                               fprintf( stderr,
+                                       "domainScope control previously specified\n");
+                               exit( EXIT_FAILURE );
+                       }
+                       if( cvalue != NULL ) {
+                               fprintf( stderr,
+                                "domainScope: no control value expected\n" );
+                               usage();
+                       }
+
+                       domainScope = 1 + crit;
+#endif
 #ifdef LDAP_CONTROL_SUBENTRIES
                } else if ( strcasecmp( control, "subentries" ) == 0 ) {
                        if( subentries ) {
@@ -609,6 +631,9 @@ main( int argc, char **argv )
 
 getNextPage:
        if ( manageDSAit || noop || subentries || valuesReturnFilter
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+                       || domainScope
+#endif
 #ifdef LDAP_CONTROL_PAGEDRESULTS
                        || pageSize
 #endif
@@ -621,7 +646,17 @@ getNextPage:
                        ) {
                int err;
                int i=0;
-               LDAPControl c[3];
+               LDAPControl c[6];
+
+#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
+       if ( domainScope ) {
+               c[i].ldctl_oid = LDAP_CONTROL_X_DOMAIN_SCOPE;
+               c[i].ldctl_value.bv_val = NULL;
+               c[i].ldctl_value.bv_len = 0;
+               c[i].ldctl_iscritical = domainScope > 1;
+               i++;
+       }
+#endif
 
 #ifdef LDAP_CONTROL_SUBENTRIES
                if ( subentries ) {
@@ -656,7 +691,7 @@ getNextPage:
                                 err = ber_printf( cuber, "{ei}", abs(lcup), lcup_cint );
                         } else {
                                 err = ber_printf( cuber, "{ei{sO}}", abs(lcup), lcup_cint,
-                                                LDAP_LCUP_COOKIE_OID, &lcup_cookie );
+                                    LDAP_CUP_COOKIE_OID, &lcup_cookie );
                         }
 
                         if ( err == LBER_ERROR ) {
index 8e5175584266b343e74aa2734103fab0670953ad..bd9b24638af72389b4e0db94120e7d86fd4b4e9a 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # $OpenLDAP$
-# from OpenLDAP: pkg/ldap/configure.in,v 1.456 2003/02/09 06:42:24 kurt Exp  
+# from OpenLDAP: pkg/ldap/configure.in,v 1.408.2.29 2003/02/09 16:31:35 kurt Exp  
 
 # Copyright 1998-2003 The OpenLDAP Foundation.  All Rights Reserved.
 # 
@@ -7760,7 +7760,7 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 LTSTATIC=""
-if test -z "$LTDYNAMIC" -a "${OPENLDAP_CVS}"; then
+if test -z "$LTDYNAMIC"; then
        LTSTATIC="-static"
 fi
 
diff --git a/include/ac/assert.h b/include/ac/assert.h
new file mode 100644 (file)
index 0000000..323c18d
--- /dev/null
@@ -0,0 +1,54 @@
+/* Generic assert.h */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.  A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+#ifndef _AC_ASSERT_H
+#define _AC_ASSERT_H
+
+#undef assert
+
+#ifdef LDAP_DEBUG
+
+#if defined( HAVE_ASSERT_H ) || defined( STDC_HEADERS )
+
+#undef NDEBUG
+#include <assert.h>
+
+#else /* !(HAVE_ASSERT_H || STDC_HEADERS) */
+
+#define LDAP_NEED_ASSERT 1
+
+/*
+ * no assert()... must be a very old compiler.
+ * create a replacement and hope it works
+ */
+
+LBER_F (void) ber_pvt_assert LDAP_P(( const char *file, int line,
+                                        const char *test ));
+
+/* Can't use LDAP_STRING(test), that'd expand to "test" */
+#if defined(__STDC__) || defined(__cplusplus)
+#define assert(test) \
+       ((test) ? (void)0 : ber_pvt_assert( __FILE__, __LINE__, #test ) )
+#else
+#define assert(test) \
+       ((test) ? (void)0 : ber_pvt_assert( __FILE__, __LINE__, "test" ) )
+#endif
+
+#endif /* (HAVE_ASSERT_H || STDC_HEADERS) */
+
+#else /* !LDAP_DEBUG */
+/* no asserts */
+#define assert(test) ((void)0)
+#endif /* LDAP_DEBUG */
+
+#endif /* _AC_ASSERT_H */
diff --git a/include/ac/bytes.h b/include/ac/bytes.h
new file mode 100644 (file)
index 0000000..4563ae1
--- /dev/null
@@ -0,0 +1,75 @@
+/* Generic bytes.h */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.  A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+#ifndef _AC_BYTES_H
+#define _AC_BYTES_H
+
+/* cross compilers should define both AC_INT{2,4}_TYPE in CPPFLAGS */
+
+#if !defined( AC_INT4_TYPE )
+       /* use autoconf defines to provide sized typedefs */
+#      if SIZEOF_LONG == 4
+#              define AC_INT4_TYPE long
+#      elif SIZEOF_INT == 4
+#              define AC_INT4_TYPE int
+#      elif SIZEOF_SHORT == 4
+#              define AC_INT4_TYPE short
+#      else
+#      error "AC_INT4_TYPE?"
+#      endif
+#endif
+
+typedef AC_INT4_TYPE ac_int4;
+typedef signed AC_INT4_TYPE ac_sint4;
+typedef unsigned AC_INT4_TYPE ac_uint4;
+
+#if !defined( AC_INT2_TYPE )
+#      if SIZEOF_SHORT == 2
+#              define AC_INT2_TYPE short
+#      elif SIZEOF_INT == 2
+#              define AC_INT2_TYPE int
+#      elif SIZEOF_LONG == 2
+#              define AC_INT2_TYPE long
+#      else
+#      error "AC_INT2_TYPE?"
+#      endif
+#endif
+#if defined( AC_INT2_TYPE )
+typedef AC_INT2_TYPE ac_int2;
+typedef signed AC_INT2_TYPE ac_sint2;
+typedef unsigned AC_INT2_TYPE ac_uint2;
+#endif
+
+#ifndef BYTE_ORDER
+/* cross compilers should define BYTE_ORDER in CPPFLAGS */
+
+/*
+ * Definitions for byte order, according to byte significance from low
+ * address to high.
+ */
+#define LITTLE_ENDIAN   1234    /* LSB first: i386, vax */
+#define BIG_ENDIAN  4321        /* MSB first: 68000, ibm, net */
+#define PDP_ENDIAN  3412        /* LSB first in word, MSW first in long */
+
+/* assume autoconf's AC_C_BIGENDIAN has been ran */
+/* if it hasn't, we assume (maybe falsely) the order is LITTLE ENDIAN */
+#      ifdef WORDS_BIGENDIAN
+#              define BYTE_ORDER  BIG_ENDIAN
+#      else
+#              define BYTE_ORDER  LITTLE_ENDIAN
+#      endif
+
+#endif /* BYTE_ORDER */
+
+#endif /* _AC_BYTES_H */
index 6e931ab28dd73e4b9feb57e070cb166992b44367..ded4c469685fca85c1ec73b1109a167e2b8d1a01 100644 (file)
@@ -1,7 +1,7 @@
 /* Generic socket.h */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -197,8 +197,12 @@ LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * ));
 #              define AC_GAI_STRERROR(x)       (gai_strerror((x)))
 #      else
 #              define AC_GAI_STRERROR(x)       (ldap_pvt_gai_strerror((x)))
-               char * ldap_pvt_gai_strerror( int );
+               LDAP_F (char *) ldap_pvt_gai_strerror( int );
 #      endif
 #endif
 
+#ifndef HAVE_GETPEEREID
+LDAP_LUTIL_F( int ) getpeereid( int s, uid_t *, gid_t * );
+#endif
+
 #endif /* _AC_SOCKET_H_ */
index aa952bd2c3694fc069fce072c7db50f2488af9b9..ea24431fcc1e2933462b0c11b3324bc1f9d7c05f 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -469,6 +469,12 @@ ber_flatten LDAP_P((
        BerElement *ber,
        struct berval **bvPtr ));
 
+LBER_F( int )
+ber_flatten2 LDAP_P((
+       BerElement *ber,
+       struct berval *bv,
+       int alloc ));
+
 /*
  * LBER ber accessor functions
  */
index f30a60ee1ac03f8861b9295beaee923784026aa8..a6d6c1a1464b6dd5a4c3f4915b5921883757ee97 100644 (file)
@@ -205,18 +205,18 @@ typedef struct ldapcontrol {
 #ifdef LDAP_CLIENT_UPDATE
 #define LDAP_CONTROL_CLIENT_UPDATE             "1.3.6.1.4.1.4203.666.5.3"
 #define LDAP_CONTROL_ENTRY_UPDATE              "1.3.6.1.4.1.4203.666.5.4"
-#define LDAP_CONTROL_CLIENT_UPDATE_DONE                "1.3.6.1.4.1.4203.666.5.5"
-#define LDAP_LCUP_COOKIE_OID                   "1.3.6.1.4.1.4203.666.10.1"
+#define LDAP_CONTROL_CLIENT_UPDATE_DONE        "1.3.6.1.4.1.4203.666.5.5"
+#define LDAP_CUP_COOKIE_OID                            "1.3.6.1.4.1.4203.666.10.1"
 #endif
 
 #ifdef LDAP_SYNC
-#define LDAP_CONTROL_SYNC                      "1.3.6.1.4.1.4203.666.5.6"
-#define LDAP_CONTROL_SYNC_STATE                        "1.3.6.1.4.1.4203.666.5.7"
-#define LDAP_CONTROL_SYNC_DONE                 "1.3.6.1.4.1.4203.666.5.8"
-#define LDAP_SYNC_INFO                         "1.3.6.1.4.1.4203.666.10.2"
+#define LDAP_CONTROL_SYNC              "1.3.6.1.4.1.4203.666.5.6"
+#define LDAP_CONTROL_SYNC_STATE        "1.3.6.1.4.1.4203.666.5.7"
+#define LDAP_CONTROL_SYNC_DONE "1.3.6.1.4.1.4203.666.5.8"
+#define LDAP_SYNC_INFO                 "1.3.6.1.4.1.4203.666.10.2"
 
-#define LDAP_SYNC_REFRESH_DONE         0
-#define LDAP_SYNC_NEW_COOKIE           1
+#define LDAP_SYNC_REFRESH_DONE 0
+#define LDAP_SYNC_NEW_COOKIE   1
 
 #define LDAP_SYNC_PRESENT              0
 #define LDAP_SYNC_ADD                  1
@@ -230,8 +230,8 @@ typedef struct ldapcontrol {
 #define LDAP_CONTROL_VLVRESPONSE    "2.16.840.1.113730.3.4.10"
 
 #ifdef LDAP_DEVEL
-#define LDAP_CONTROL_PERMITMODIFY "1.2.840.113556.1.4.1413"
-#define LDAP_CONTROL_NOREFERRALS "1.2.840.113556.1.4.1339"
+#define LDAP_CONTROL_X_DOMAIN_SCOPE "1.2.840.113556.1.4.1339"
+#define LDAP_CONTROL_X_PERMISSIVE_MODIFY "1.2.840.113556.1.4.1413"
 #endif
 
 /* LDAP Unsolicited Notifications */
@@ -247,10 +247,11 @@ typedef struct ldapcontrol {
 #define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW        ((ber_tag_t) 0x82U)
 #define LDAP_TAG_EXOP_MODIFY_PASSWD_GEN        ((ber_tag_t) 0x80U)
 
+#define LDAP_EXOP_X_WHO_AM_I   "1.3.6.1.4.1.4203.1.11.3"
+
 #ifdef LDAP_DEVEL
 #define LDAP_EXOP_X_CANCEL             "1.3.6.1.4.1.4203.666.6.3"
 #endif
-#define LDAP_EXOP_X_WHO_AM_I   "1.3.6.1.4.1.4203.1.11.3"
 
 /* LDAP Features */
 #define LDAP_FEATURE_ALL_OPERATIONAL_ATTRS "1.3.6.1.4.1.4203.1.5.1"  /* + */
@@ -300,8 +301,8 @@ typedef struct ldapcontrol {
 #define LDAP_TAG_SASL_RES_CREDS        ((ber_tag_t) 0x87U)     /* context specific + primitive */
 
 #ifdef LDAP_CLIENT_UPDATE
-#define LDAP_TAG_INTERVAL      ((ber_tag_t) 0x02U)     /* integer */
-#define LDAP_LCUP_TAG_COOKIE   ((ber_tag_t) 0x30U)     /* sequence */
+#define LDAP_CUP_TAG_INTERVAL  ((ber_tag_t) 0x02U)     /* integer */
+#define LDAP_CUP_TAG_COOKIE            ((ber_tag_t) 0x30U)     /* sequence */
 #endif
 
 #ifdef LDAP_SYNC
@@ -310,32 +311,32 @@ typedef struct ldapcontrol {
 
 
 /* possible operations a client can invoke */
-#define LDAP_REQ_BIND                  ((ber_tag_t) 0x60U)     /* application + constructed */
-#define LDAP_REQ_UNBIND                        ((ber_tag_t) 0x42U)     /* application + primitive   */
-#define LDAP_REQ_SEARCH                        ((ber_tag_t) 0x63U)     /* application + constructed */
-#define LDAP_REQ_MODIFY                        ((ber_tag_t) 0x66U)     /* application + constructed */
-#define LDAP_REQ_ADD                   ((ber_tag_t) 0x68U)     /* application + constructed */
-#define LDAP_REQ_DELETE                        ((ber_tag_t) 0x4aU)     /* application + primitive   */
-#define LDAP_REQ_MODDN                 ((ber_tag_t) 0x6cU)     /* application + constructed */
-#define LDAP_REQ_MODRDN                        LDAP_REQ_MODDN
-#define LDAP_REQ_RENAME                        LDAP_REQ_MODDN
-#define LDAP_REQ_COMPARE               ((ber_tag_t) 0x6eU)     /* application + constructed */
-#define LDAP_REQ_ABANDON               ((ber_tag_t) 0x50U)     /* application + primitive   */
-#define LDAP_REQ_EXTENDED              ((ber_tag_t) 0x77U)     /* application + constructed */
+#define LDAP_REQ_BIND          ((ber_tag_t) 0x60U)     /* application + constructed */
+#define LDAP_REQ_UNBIND                ((ber_tag_t) 0x42U)     /* application + primitive   */
+#define LDAP_REQ_SEARCH                ((ber_tag_t) 0x63U)     /* application + constructed */
+#define LDAP_REQ_MODIFY                ((ber_tag_t) 0x66U)     /* application + constructed */
+#define LDAP_REQ_ADD           ((ber_tag_t) 0x68U)     /* application + constructed */
+#define LDAP_REQ_DELETE                ((ber_tag_t) 0x4aU)     /* application + primitive   */
+#define LDAP_REQ_MODDN         ((ber_tag_t) 0x6cU)     /* application + constructed */
+#define LDAP_REQ_MODRDN                LDAP_REQ_MODDN
+#define LDAP_REQ_RENAME                LDAP_REQ_MODDN
+#define LDAP_REQ_COMPARE       ((ber_tag_t) 0x6eU)     /* application + constructed */
+#define LDAP_REQ_ABANDON       ((ber_tag_t) 0x50U)     /* application + primitive   */
+#define LDAP_REQ_EXTENDED      ((ber_tag_t) 0x77U)     /* application + constructed */
 
 /* possible result types a server can return */
-#define LDAP_RES_BIND                  ((ber_tag_t) 0x61U)     /* application + constructed */
-#define LDAP_RES_SEARCH_ENTRY          ((ber_tag_t) 0x64U)     /* application + constructed */
+#define LDAP_RES_BIND          ((ber_tag_t) 0x61U)     /* application + constructed */
+#define LDAP_RES_SEARCH_ENTRY  ((ber_tag_t) 0x64U)     /* application + constructed */
 #define LDAP_RES_SEARCH_REFERENCE      ((ber_tag_t) 0x73U)     /* V3: application + constructed */
-#define LDAP_RES_SEARCH_RESULT         ((ber_tag_t) 0x65U)     /* application + constructed */
-#define LDAP_RES_MODIFY                        ((ber_tag_t) 0x67U)     /* application + constructed */
-#define LDAP_RES_ADD                   ((ber_tag_t) 0x69U)     /* application + constructed */
-#define LDAP_RES_DELETE                        ((ber_tag_t) 0x6bU)     /* application + constructed */
-#define LDAP_RES_MODDN                 ((ber_tag_t) 0x6dU)     /* application + constructed */
-#define LDAP_RES_MODRDN                        LDAP_RES_MODDN  /* application + constructed */
-#define LDAP_RES_RENAME                        LDAP_RES_MODDN  /* application + constructed */
-#define LDAP_RES_COMPARE               ((ber_tag_t) 0x6fU)     /* application + constructed */
-#define LDAP_RES_EXTENDED              ((ber_tag_t) 0x78U)     /* V3: application + constructed */
+#define LDAP_RES_SEARCH_RESULT ((ber_tag_t) 0x65U)     /* application + constructed */
+#define LDAP_RES_MODIFY                ((ber_tag_t) 0x67U)     /* application + constructed */
+#define LDAP_RES_ADD           ((ber_tag_t) 0x69U)     /* application + constructed */
+#define LDAP_RES_DELETE                ((ber_tag_t) 0x6bU)     /* application + constructed */
+#define LDAP_RES_MODDN         ((ber_tag_t) 0x6dU)     /* application + constructed */
+#define LDAP_RES_MODRDN                LDAP_RES_MODDN  /* application + constructed */
+#define LDAP_RES_RENAME                LDAP_RES_MODDN  /* application + constructed */
+#define LDAP_RES_COMPARE       ((ber_tag_t) 0x6fU)     /* application + constructed */
+#define LDAP_RES_EXTENDED      ((ber_tag_t) 0x78U)     /* V3: application + constructed */
 #define LDAP_RES_EXTENDED_PARTIAL      ((ber_tag_t) 0x79U)     /* V3+: application + constructed */
 #ifdef LDAP_DEVEL
 #define LDAP_RES_INTERMEDIATE_RESP     ((ber_tag_t) 0x7aU)
@@ -346,40 +347,40 @@ typedef struct ldapcontrol {
 
 
 /* sasl methods */
-#define LDAP_SASL_SIMPLE               ((char*)0)
-#define LDAP_SASL_NULL                 ("")
+#define LDAP_SASL_SIMPLE       ((char*)0)
+#define LDAP_SASL_NULL         ("")
 
 
 /* authentication methods available */
-#define LDAP_AUTH_NONE         ((ber_tag_t) 0x00U)     /* no authentication              */
-#define LDAP_AUTH_SIMPLE       ((ber_tag_t) 0x80U)     /* context specific + primitive   */
-#define LDAP_AUTH_SASL         ((ber_tag_t) 0xa3U)     /* context specific + constructed */
-#define LDAP_AUTH_KRBV4                ((ber_tag_t) 0xffU)     /* means do both of the following */
-#define LDAP_AUTH_KRBV41       ((ber_tag_t) 0x81U)     /* context specific + primitive   */
-#define LDAP_AUTH_KRBV42       ((ber_tag_t) 0x82U)     /* context specific + primitive   */
+#define LDAP_AUTH_NONE ((ber_tag_t) 0x00U)     /* no authentication              */
+#define LDAP_AUTH_SIMPLE       ((ber_tag_t) 0x80U)     /* context specific + primitive */
+#define LDAP_AUTH_SASL ((ber_tag_t) 0xa3U)     /* context specific + constructed */
+#define LDAP_AUTH_KRBV4        ((ber_tag_t) 0xffU)     /* means do both of the following */
+#define LDAP_AUTH_KRBV41       ((ber_tag_t) 0x81U)     /* context specific + primitive */
+#define LDAP_AUTH_KRBV42       ((ber_tag_t) 0x82U)     /* context specific + primitive */
 
 
 /* filter types */
-#define LDAP_FILTER_AND                ((ber_tag_t) 0xa0U)     /* context specific + constructed */
-#define LDAP_FILTER_OR         ((ber_tag_t) 0xa1U)     /* context specific + constructed */
-#define LDAP_FILTER_NOT                ((ber_tag_t) 0xa2U)     /* context specific + constructed */
+#define LDAP_FILTER_AND        ((ber_tag_t) 0xa0U)     /* context specific + constructed */
+#define LDAP_FILTER_OR ((ber_tag_t) 0xa1U)     /* context specific + constructed */
+#define LDAP_FILTER_NOT        ((ber_tag_t) 0xa2U)     /* context specific + constructed */
 #define LDAP_FILTER_EQUALITY   ((ber_tag_t) 0xa3U)     /* context specific + constructed */
 #define LDAP_FILTER_SUBSTRINGS ((ber_tag_t) 0xa4U)     /* context specific + constructed */
-#define LDAP_FILTER_GE         ((ber_tag_t) 0xa5U)     /* context specific + constructed */
-#define LDAP_FILTER_LE         ((ber_tag_t) 0xa6U)     /* context specific + constructed */
+#define LDAP_FILTER_GE ((ber_tag_t) 0xa5U)     /* context specific + constructed */
+#define LDAP_FILTER_LE ((ber_tag_t) 0xa6U)     /* context specific + constructed */
 #define LDAP_FILTER_PRESENT    ((ber_tag_t) 0x87U)     /* context specific + primitive   */
 #define LDAP_FILTER_APPROX     ((ber_tag_t) 0xa8U)     /* context specific + constructed */
-#define LDAP_FILTER_EXT                ((ber_tag_t) 0xa9U)     /* context specific + constructed */
+#define LDAP_FILTER_EXT        ((ber_tag_t) 0xa9U)     /* context specific + constructed */
 
 /* extended filter component types */
-#define LDAP_FILTER_EXT_OID    ((ber_tag_t) 0x81U)     /* context specific */
+#define LDAP_FILTER_EXT_OID            ((ber_tag_t) 0x81U)     /* context specific */
 #define LDAP_FILTER_EXT_TYPE   ((ber_tag_t) 0x82U)     /* context specific */
 #define LDAP_FILTER_EXT_VALUE  ((ber_tag_t) 0x83U)     /* context specific */
 #define LDAP_FILTER_EXT_DNATTRS        ((ber_tag_t) 0x84U)     /* context specific */
 
 /* substring filter component types */
 #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U)     /* context specific */
-#define LDAP_SUBSTRING_ANY     ((ber_tag_t) 0x81U)     /* context specific */
+#define LDAP_SUBSTRING_ANY             ((ber_tag_t) 0x81U)     /* context specific */
 #define LDAP_SUBSTRING_FINAL   ((ber_tag_t) 0x82U)     /* context specific */
 
 /* search scopes */
@@ -390,7 +391,7 @@ typedef struct ldapcontrol {
 
 /* substring filter component types */
 #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U)     /* context specific */
-#define LDAP_SUBSTRING_ANY     ((ber_tag_t) 0x81U)     /* context specific */
+#define LDAP_SUBSTRING_ANY             ((ber_tag_t) 0x81U)     /* context specific */
 #define LDAP_SUBSTRING_FINAL   ((ber_tag_t) 0x82U)     /* context specific */
 
 /*
@@ -399,13 +400,13 @@ typedef struct ldapcontrol {
 
 #define LDAP_RANGE(n,x,y)      (((x) <= (n)) && ((n) <= (y)))
 
-#define LDAP_SUCCESS                   0x00
+#define LDAP_SUCCESS                           0x00
 #define LDAP_OPERATIONS_ERROR          0x01
-#define LDAP_PROTOCOL_ERROR            0x02
+#define LDAP_PROTOCOL_ERROR                    0x02
 #define LDAP_TIMELIMIT_EXCEEDED                0x03
 #define LDAP_SIZELIMIT_EXCEEDED                0x04
-#define LDAP_COMPARE_FALSE             0x05
-#define LDAP_COMPARE_TRUE              0x06
+#define LDAP_COMPARE_FALSE                     0x05
+#define LDAP_COMPARE_TRUE                      0x06
 #define LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07
 #define LDAP_STRONG_AUTH_NOT_SUPPORTED LDAP_AUTH_METHOD_NOT_SUPPORTED
 #define LDAP_STRONG_AUTH_REQUIRED      0x08
@@ -420,18 +421,18 @@ typedef struct ldapcontrol {
 #define LDAP_ATTR_ERROR(n)     LDAP_RANGE((n),0x10,0x15) /* 16-21 */
 
 #define LDAP_NO_SUCH_ATTRIBUTE         0x10
-#define LDAP_UNDEFINED_TYPE            0x11
+#define LDAP_UNDEFINED_TYPE                    0x11
 #define LDAP_INAPPROPRIATE_MATCHING    0x12
 #define LDAP_CONSTRAINT_VIOLATION      0x13
 #define LDAP_TYPE_OR_VALUE_EXISTS      0x14
-#define LDAP_INVALID_SYNTAX            0x15
+#define LDAP_INVALID_SYNTAX                    0x15
 
 #define LDAP_NAME_ERROR(n)     LDAP_RANGE((n),0x20,0x24) /* 32-34,36 */
 
-#define LDAP_NO_SUCH_OBJECT            0x20
-#define LDAP_ALIAS_PROBLEM             0x21
+#define LDAP_NO_SUCH_OBJECT                    0x20
+#define LDAP_ALIAS_PROBLEM                     0x21
 #define LDAP_INVALID_DN_SYNTAX         0x22
-#define LDAP_IS_LEAF                   0x23 /* not LDAPv3 */
+#define LDAP_IS_LEAF                           0x23 /* not LDAPv3 */
 #define LDAP_ALIAS_DEREF_PROBLEM       0x24
 
 #define LDAP_SECURITY_ERROR(n) LDAP_RANGE((n),0x2F,0x32) /* 47-50 */
@@ -443,10 +444,10 @@ typedef struct ldapcontrol {
 
 #define LDAP_SERVICE_ERROR(n)  LDAP_RANGE((n),0x33,0x36) /* 51-54 */
 
-#define LDAP_BUSY                      0x33
-#define LDAP_UNAVAILABLE               0x34
+#define LDAP_BUSY                                      0x33
+#define LDAP_UNAVAILABLE                       0x34
 #define LDAP_UNWILLING_TO_PERFORM      0x35
-#define LDAP_LOOP_DETECT               0x36
+#define LDAP_LOOP_DETECT                       0x36
 
 #define LDAP_UPDATE_ERROR(n)   LDAP_RANGE((n),0x40,0x47) /* 64-69,71 */
 
@@ -454,16 +455,16 @@ typedef struct ldapcontrol {
 #define LDAP_OBJECT_CLASS_VIOLATION    0x41
 #define LDAP_NOT_ALLOWED_ON_NONLEAF    0x42
 #define LDAP_NOT_ALLOWED_ON_RDN                0x43
-#define LDAP_ALREADY_EXISTS            0x44
+#define LDAP_ALREADY_EXISTS                    0x44
 #define LDAP_NO_OBJECT_CLASS_MODS      0x45
 #define LDAP_RESULTS_TOO_LARGE         0x46 /* CLDAP */
 #define LDAP_AFFECTS_MULTIPLE_DSAS     0x47 /* LDAPv3 */
 
-#define LDAP_OTHER                     0x50
+#define LDAP_OTHER                             0x50
 
 #define LDAP_API_ERROR(n)              LDAP_RANGE((n),0x51,0x61) /* 81-97 */
 #define LDAP_API_RESULT(n)             (((n) == LDAP_SUCCESS) || \
-                                                                       LDAP_RANGE((n),0x51,0x61)) /* 0,81-97 */
+                                                               LDAP_RANGE((n),0x51,0x61)) /* 0,81-97 */
 
 /* reserved for APIs */
 #define LDAP_SERVER_DOWN               0x51
@@ -502,11 +503,6 @@ typedef struct ldapcontrol {
 #define LDAP_NO_SUCH_OPERATION                 0x111
 #define LDAP_TOO_LATE                                  0x112
 #define LDAP_CANNOT_CANCEL                             0x113
-
-#define LDAP_CANCEL_NONE                               0x00
-#define LDAP_CANCEL_REQ                                        0x01
-#define LDAP_CANCEL_ACK                                        0x02
-#define LDAP_CANCEL_DONE                               0x03
 #endif
 
 #ifdef LDAP_CLIENT_UPDATE
@@ -539,10 +535,10 @@ typedef struct ldapmsg LDAPMessage;
 typedef struct ldapmod {
        int             mod_op;
 
-#define LDAP_MOD_ADD           ((ber_int_t) 0x0000)
-#define LDAP_MOD_DELETE                ((ber_int_t) 0x0001)
-#define LDAP_MOD_REPLACE       ((ber_int_t) 0x0002)
-#define LDAP_MOD_BVALUES       ((ber_int_t) 0x0080)
+#define LDAP_MOD_ADD           (0x0000)
+#define LDAP_MOD_DELETE                (0x0001)
+#define LDAP_MOD_REPLACE       (0x0002)
+#define LDAP_MOD_BVALUES       (0x0080)
 /* IMPORTANT: do not use code 0x1000 (or above),
  * it is used internally by the backends!
  * (see ldap/servers/slapd/slap.h)
@@ -564,17 +560,17 @@ typedef struct ldapmod {
  */
 typedef struct ldap LDAP;
 
-#define LDAP_DEREF_NEVER       0x00
+#define LDAP_DEREF_NEVER               0x00
 #define LDAP_DEREF_SEARCHING   0x01
-#define LDAP_DEREF_FINDING     0x02
-#define LDAP_DEREF_ALWAYS      0x03
+#define LDAP_DEREF_FINDING             0x02
+#define LDAP_DEREF_ALWAYS              0x03
 
-#define LDAP_NO_LIMIT          0
+#define LDAP_NO_LIMIT                  0
 
 /* how many messages to retrieve results for */
-#define LDAP_MSG_ONE           0x00
-#define LDAP_MSG_ALL           0x01
-#define LDAP_MSG_RECEIVED      0x02
+#define LDAP_MSG_ONE                   0x00
+#define LDAP_MSG_ALL                   0x01
+#define LDAP_MSG_RECEIVED              0x02
 
 /*
  * types for ldap URL handling
@@ -893,31 +889,6 @@ ldap_kerberos_bind2_s LDAP_P((     /* deprecated */
        LDAP *ld,
        LDAP_CONST char *who ));
 
-/*
- * in cache.c
- * (deprecated)
- */
-LDAP_F( int )
-ldap_enable_cache LDAP_P(( LDAP *ld, long timeout, ber_len_t maxmem ));
-
-LDAP_F( void )
-ldap_disable_cache LDAP_P(( LDAP *ld ));
-
-LDAP_F( void )
-ldap_set_cache_options LDAP_P(( LDAP *ld, unsigned long opts ));
-
-LDAP_F( void )
-ldap_destroy_cache LDAP_P(( LDAP *ld ));
-
-LDAP_F( void )
-ldap_flush_cache LDAP_P(( LDAP *ld ));
-
-LDAP_F( void )
-ldap_uncache_entry LDAP_P(( LDAP *ld, LDAP_CONST char *dn ));
-
-LDAP_F( void )
-ldap_uncache_request LDAP_P(( LDAP *ld, int msgid ));
-
 
 /*
  * LDAP Cancel Extended Operation <draft-zeilenga-ldap-cancel-xx.txt>
index 705466c8619c1bb9d5b40fc285198fb4b6090d07..46d96036ea11e3e08eb8298a9d5b7cb65cd8d82a 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #define LDAP_RUNDIR                    "%RUNDIR%"
 #endif
 
-/* command locations */
-#ifndef LDAP_EDITOR
-#define LDAP_EDITOR                    "%EDITOR%"
-#endif
-#ifndef LDAP_SENDMAIL
-#define LDAP_SENDMAIL          "%SENDMAIL%"
-#endif
-
 #endif /* _LDAP_CONFIG_H */
index 18646ac9e0b5c43a9e20bce806cb88447cf34ad2..8d3b44d9c4356f116cb30a499ad3e02904f4212f 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms are permitted only
 #define LDAP_RUNDIR                    LDAP_PREFIX "\\run"
 #endif
 
-/* command locations */
-#ifndef LDAP_EDITOR
-#define LDAP_EDITOR                    "%EDITOR%"
-#endif
-#ifndef LDAP_SENDMAIL
-#define LDAP_SENDMAIL          "%SENDMAIL%"
-#endif
-
 #endif /* _LDAP_CONFIG_H */
diff --git a/include/ldap_features.h.in b/include/ldap_features.h.in
new file mode 100644 (file)
index 0000000..5f20ccc
--- /dev/null
@@ -0,0 +1,66 @@
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.  A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+/* 
+ * LDAP Features
+ */
+
+#ifndef _LDAP_FEATURES_H
+#define _LDAP_FEATURES_H 1
+
+/* OpenLDAP API version macros */
+#undef LDAP_VENDOR_VERSION
+#undef LDAP_VENDOR_VERSION_MAJOR
+#undef LDAP_VENDOR_VERSION_MINOR
+#undef LDAP_VENDOR_VERSION_PATCH
+
+/*
+** WORK IN PROGRESS!
+**
+** OpenLDAP reentrancy/thread-safeness should be dynamically
+** checked using ldap_get_option().
+**
+** The -lldap implementation is not thread-safe.
+**
+** The -lldap_r implementation is:
+**             LDAP_API_FEATURE_THREAD_SAFE (basic thread safety)
+** but also be:
+**             LDAP_API_FEATURE_SESSION_THREAD_SAFE
+**             LDAP_API_FEATURE_OPERATION_THREAD_SAFE
+**
+** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
+** can be used to determine if -lldap_r is available at compile
+** time.  You must define LDAP_THREAD_SAFE if and only if you
+** link with -lldap_r.
+**
+** If you fail to define LDAP_THREAD_SAFE when linking with
+** -lldap_r or define LDAP_THREAD_SAFE when linking with -lldap,
+** provided header definations and declarations may be incorrect.
+**
+*/
+
+/* is -lldap_r available or not */
+#undef LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
+
+/* LDAP v2 Kerberos Bind */
+#undef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
+
+/* LDAP v2 Referrals */
+#undef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
+
+/* LDAP Server Side Sort. */
+#define LDAP_API_FEATURE_SERVER_SIDE_SORT 1000
+
+/* LDAP Virtual List View. */ 
+#define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 1000
+
+#endif /* LDAP_FEATURES */
diff --git a/include/ldap_features.nt b/include/ldap_features.nt
new file mode 100644 (file)
index 0000000..69f5c62
--- /dev/null
@@ -0,0 +1,69 @@
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License.  A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
+/* 
+ * LDAP Features
+ */
+#ifndef _LDAP_FEATURES_H
+#define _LDAP_FEATURES_H 1
+
+/* OpenLDAP API version macros */
+#define LDAP_VENDOR_VERSION                    0
+#define LDAP_VENDOR_VERSION_MAJOR      2
+#define LDAP_VENDOR_VERSION_MINOR      X
+#define LDAP_VENDOR_VERSION_PATCH      X
+
+/*
+** WORK IN PROGRESS!
+**
+** OpenLDAP reentrancy/thread-safeness should be dynamically
+** checked using ldap_get_option().
+**
+** The -lldap implementation may or may not be:
+**             LDAP_API_FEATURE_THREAD_SAFE
+**
+** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_REENTRANT can
+** be used to determine if -lldap is LDAP_API_FEATURE_THREAD_SAFE at
+** compile time.
+**
+** The -lldap_r implementation is always THREAD_SAFE but
+** may also be:
+**             LDAP_API_FEATURE_SESSION_THREAD_SAFE
+**             LDAP_API_FEATURE_OPERATION_THREAD_SAFE
+**
+** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE
+** can be used to determine if -lldap_r is availalbe at compile
+** time.  You must define LDAP_THREAD_SAFE if and only if you
+** link with -lldap_r.
+**
+** If you fail to define LDAP_THREAD_SAFE when linking with
+** -lldap_r or define LDAP_THREAD_SAFE when linking with -lldap,
+** provided header definations and declarations may be incorrect.
+**
+*/
+
+/* is -lldap reentrant or not */
+/* #undef LDAP_API_FEATURE_X_OPENLDAP_REENTRANT */
+
+/* is threadsafe version of -lldap (ie: -lldap_r) *available* or not */
+#define LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE LDAP_VENDOR_VERSION
+
+/* LDAP v2 Referrals */
+#define LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS LDAP_VENDOR_VERSION
+
+/* LDAP Server Side Sort. */
+#define LDAP_API_FEATURE_SERVER_SIDE_SORT 1000
+
+/* LDAP Virtual List View. Version = 1000 + draft revision.
+ * VLV requires Server Side Sort control.
+ */
+#define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 1000
+
+#endif /* LDAP_FEATURES */
index 27c90e6c61a68fcb8f4ff696907fcf39ebdbf950..d02359ad9e4eb49bfae70b73bb1a5425cc68f638 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -97,6 +97,9 @@ ldap_pvt_thread_mutex_trylock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
 LDAP_F( int )
 ldap_pvt_thread_mutex_unlock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
 
+LDAP_F( ldap_pvt_thread_t )
+ldap_pvt_thread_self LDAP_P(( void ));
+
 #ifndef LDAP_THREAD_HAVE_RDWR
 typedef struct ldap_int_thread_rdwr_s * ldap_pvt_thread_rdwr_t;
 #endif
@@ -184,6 +187,9 @@ ldap_pvt_thread_pool_setkey LDAP_P((
        void *data,
        ldap_pvt_thread_pool_keyfree_t *kfree ));
 
+LDAP_F( void *)
+ldap_pvt_thread_pool_context LDAP_P((
+       ldap_pvt_thread_pool_t *pool ));
 
 LDAP_END_DECL
 
index ae2c2ae107f14ba422ccba71dbc406ec14223c47..4e45bb60dd6d24250c73b9aa253f3500deae282a 100644 (file)
@@ -2,7 +2,7 @@
 /* include/portable.nt -- manually updated of MS NT (MS VC5) */
 /* synced with portable.h.in 1.191 */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 /* Define if you have the recvfrom function.  */
 /* #undef HAVE_RECVFROM */
 
-/* Define if you have the recvmsg function.  */
-/* #undef HAVE_RECVMSG */
-
 /* Define if you have the sched_yield function.  */
 /* #undef HAVE_SCHED_YIELD */
 
index 22e60b365a05c7695ad0108f172706905a45db68..0d03a805800fe2af1d94994f25d25de0bfdc48a9 100644 (file)
@@ -10,8 +10,8 @@ PROGRAMS = apitest dntest ftest ltest
 
 SRCS   = bind.c open.c result.c error.c compare.c search.c \
        controls.c messages.c references.c extended.c cyrus.c \
-       modify.c add.c modrdn.c delete.c abandon.c cache.c \
-       sasl.c sbind.c kbind.c unbind.c cancel.c \
+       modify.c add.c modrdn.c delete.c abandon.c \
+       sasl.c sbind.c kbind.c unbind.c cancel.c  \
        filter.c free.c sort.c passwd.c whoami.c \
        getdn.c getentry.c getattr.c getvalues.c addentry.c \
        request.c os-ip.c url.c sortctrl.c vlvctrl.c \
@@ -19,7 +19,7 @@ SRCS  = bind.c open.c result.c error.c compare.c search.c \
        charray.c tls.c os-local.c dnssrv.c utf-8.c utf-8-conv.c
 OBJS   = bind.lo open.lo result.lo error.lo compare.lo search.lo \
        controls.lo messages.lo references.lo extended.lo cyrus.lo \
-       modify.lo add.lo modrdn.lo delete.lo abandon.lo cache.lo \
+       modify.lo add.lo modrdn.lo delete.lo abandon.lo \
        sasl.lo sbind.lo kbind.lo unbind.lo cancel.lo \
        filter.lo free.lo sort.lo passwd.lo whoami.lo \
        getdn.lo getentry.lo getattr.lo getvalues.lo addentry.lo \
index bb13bcc11f511a673d8a43b51df26c8937b04798..ce850217bcdc7a3374cf661ce6693b241856d8ce 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -97,17 +97,6 @@ ldap_compare_ext(
                return( ld->ld_errno );
        }
 
-#ifndef LDAP_NOCACHE
-       if ( ld->ld_cache != NULL ) {
-               if ( ldap_check_cache( ld, LDAP_REQ_COMPARE, ber ) == 0 ) {
-                       ber_free( ber, 1 );
-                       ld->ld_errno = LDAP_SUCCESS;
-                       *msgidp = ld->ld_msgid;
-                       return( ld->ld_errno );
-               }
-               ldap_add_request_to_cache( ld, LDAP_REQ_COMPARE, ber );
-       }
-#endif /* LDAP_NOCACHE */
 
        /* send the message */
        *msgidp = ldap_send_initial_request( ld, LDAP_REQ_COMPARE, dn, ber );
index eadf2ac72dd1f8b7266d9a75d49ba52338219217..0d32aac0e037310ee0d192396cbd4482115f0eaf 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -101,11 +101,6 @@ ldap_kerberos_bind1( LDAP *ld, LDAP_CONST char *dn )
 
        LDAP_FREE( cred );
 
-#ifndef LDAP_NOCACHE
-       if ( ld->ld_cache != NULL ) {
-               ldap_flush_cache( ld );
-       }
-#endif /* !LDAP_NOCACHE */
 
        /* send the message */
        return ( ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber ));
index 01e51e7ba8679bba367512fccda5d96f69cfec73..149ac4a31a972c30d380cee96dabd8724c540b7a 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -22,6 +22,8 @@
 #include <ac/string.h>
 #include <ac/time.h>
 
+#include <ac/unistd.h>
+
 #include "ldap-int.h"
 #include "ldap_log.h"
 
index b752a382feb454182a27cd29298001362bc40b9d..0e03335de6f54e71137e09ad80df111ee998b80e 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -131,6 +131,10 @@ ldap_pvt_is_socket_ready(LDAP *ld, int s)
 }
 #undef TRACE
 
+#if !defined(HAVE_GETPEEREID) && !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && defined(HAVE_SENDMSG)
+#define DO_SENDMSG
+#endif
+
 static int
 ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
 {
@@ -155,6 +159,25 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
                if ( ldap_pvt_ndelay_off(ld, s) == -1 ) {
                        return ( -1 );
                }
+#ifdef DO_SENDMSG
+       /* Send a dummy message with access rights. Remote side will
+        * obtain our uid/gid by fstat'ing this descriptor.
+        */
+sendcred:       {
+                       int fds[2];
+                       struct iovec iov = {(char *)fds, sizeof(int)};
+                       struct msghdr msg = {0};
+                       if (pipe(fds) == 0) {
+                               msg.msg_iov = &iov;
+                               msg.msg_iovlen = 1;
+                               msg.msg_accrights = (char *)fds;
+                               msg.msg_accrightslen = sizeof(int);
+                               sendmsg( s, &msg, 0 );
+                               close(fds[0]);
+                               close(fds[1]);
+                       }
+               }
+#endif
                return ( 0 );
        }
 
@@ -181,7 +204,11 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
                        return ( -1 );
                if ( ldap_pvt_ndelay_off(ld, s) == -1 )
                        return ( -1 );
+#ifdef DO_SENDMSG
+               goto sendcred;
+#else
                return ( 0 );
+#endif
        }
        oslocal_debug(ld, "ldap_connect_timeout: timed out\n",0,0,0);
        ldap_pvt_set_errno( ETIMEDOUT );
index 913a9cb80602ea93e4ffc5bda2c2aa5611f12573..ac60a337c54764dda07cc9850109c3a2177ef566 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -811,11 +811,6 @@ lr->lr_res_matched ? lr->lr_res_matched : "" );
        new->lm_msgtype = tag;
        new->lm_ber = ber;
 
-#ifndef LDAP_NOCACHE
-               if ( ld->ld_cache != NULL ) {
-                       ldap_add_result_to_cache( ld, new );
-               }
-#endif /* LDAP_NOCACHE */
 
        /* is this the one we're looking for? */
        if ( msgid == LDAP_RES_ANY || id == msgid ) {
@@ -883,18 +878,7 @@ lr->lr_res_matched ? lr->lr_res_matched : "" );
                        prev->lm_next = l->lm_next;
                *result = l;
                ld->ld_errno = LDAP_SUCCESS;
-#ifdef LDAP_WORLD_P16
-               /*
-                * XXX questionable fix; see text for [P16] on
-                * http://www.critical-angle.com/ldapworld/patch/
-                *
-                * inclusion of this patch causes searchs to hang on
-                * multiple platforms
-                */
-               return( l->lm_msgtype );
-#else  /* LDAP_WORLD_P16 */
                return( tag );
-#endif /* !LDAP_WORLD_P16 */
        }
 
 leave:
index 7a053dfeb875f36a44ad06bef2d61f904e1e043c..2c73abccf2e763ec00e67d520f5db12aaca251e5 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -138,11 +138,6 @@ ldap_sasl_bind(
                return ld->ld_errno;
        }
 
-#ifndef LDAP_NOCACHE
-       if ( ld->ld_cache != NULL ) {
-               ldap_flush_cache( ld );
-       }
-#endif /* !LDAP_NOCACHE */
 
        /* send the message */
        *msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber );
index 2817e650826ddfb9c720510c6d65e72fe2510e39..a28629cfa7acc9403a1ad547dc0a45f23fb128a1 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -98,17 +98,6 @@ ldap_search_ext(
                return ld->ld_errno;
        }
 
-#ifndef LDAP_NOCACHE
-       if ( ld->ld_cache != NULL ) {
-               if ( ldap_check_cache( ld, LDAP_REQ_SEARCH, ber ) == 0 ) {
-                       ber_free( ber, 1 );
-                       ld->ld_errno = LDAP_SUCCESS;
-                       *msgidp = ld->ld_msgid;
-                       return ld->ld_errno;
-               }
-               ldap_add_request_to_cache( ld, LDAP_REQ_SEARCH, ber );
-       }
-#endif /* LDAP_NOCACHE */
 
        /* send the message */
        *msgidp = ldap_send_initial_request( ld, LDAP_REQ_SEARCH, base, ber );
@@ -199,16 +188,6 @@ ldap_search(
                return( -1 );
        }
 
-#ifndef LDAP_NOCACHE
-       if ( ld->ld_cache != NULL ) {
-               if ( ldap_check_cache( ld, LDAP_REQ_SEARCH, ber ) == 0 ) {
-                       ber_free( ber, 1 );
-                       ld->ld_errno = LDAP_SUCCESS;
-                       return( ld->ld_msgid );
-               }
-               ldap_add_request_to_cache( ld, LDAP_REQ_SEARCH, ber );
-       }
-#endif /* LDAP_NOCACHE */
 
        /* send the message */
        return ( ldap_send_initial_request( ld, LDAP_REQ_SEARCH, base, ber ));
index 1300418abcaaf9c66dd431a9e09dc156f050a01a..7d39dddac4a0d39c2e7f0d600efff9ae40476bd6 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -47,8 +47,6 @@ static void print_ldap_result LDAP_P(( LDAP *ld, LDAPMessage *lm,
 static void print_search_entry LDAP_P(( LDAP *ld, LDAPMessage *res ));
 static void free_list LDAP_P(( char **list ));
 
-#define NOCACHEERRMSG  "don't compile with -DLDAP_NOCACHE if you desire local caching"
-
 static char *dnsuffix;
 
 #ifndef HAVE_GETLINE
@@ -646,39 +644,6 @@ main( int argc, char **argv )
                        strcpy( dnsuffix, line );
                        break;
 
-               case 'e':       /* enable cache */
-#ifdef LDAP_NOCACHE
-                       printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
-                       getline( line, sizeof(line), stdin, "Cache timeout (secs)? " );
-                       i = atoi( line );
-                       getline( line, sizeof(line), stdin, "Maximum memory to use (bytes)? " );
-                       if ( ldap_enable_cache( ld, i, atoi( line )) == 0 ) {
-                               printf( "local cache is on\n" ); 
-                       } else {
-                               printf( "ldap_enable_cache failed\n" ); 
-                       }
-#endif /* LDAP_NOCACHE */
-                       break;
-
-               case 'x':       /* uncache entry */
-#ifdef LDAP_NOCACHE
-                       printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
-                       getline( line, sizeof(line), stdin, "DN? " );
-                       ldap_uncache_entry( ld, line );
-#endif /* LDAP_NOCACHE */
-                       break;
-
-               case 'X':       /* uncache request */
-#ifdef LDAP_NOCACHE
-                       printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
-                       getline( line, sizeof(line), stdin, "request msgid? " );
-                       ldap_uncache_request( ld, atoi( line ));
-#endif /* LDAP_NOCACHE */
-                       break;
-
                case 'o':       /* set ldap options */
                        getline( line, sizeof(line), stdin, "alias deref (0=never, 1=searching, 2=finding, 3=always)?" );
                        ld->ld_deref = atoi( line );
@@ -701,39 +666,16 @@ main( int argc, char **argv )
                        }
                        break;
 
-               case 'O':       /* set cache options */
-#ifdef LDAP_NOCACHE
-                       printf( NOCACHEERRMSG );
-#else /* LDAP_NOCACHE */
-                       getline( line, sizeof(line), stdin, "cache errors (0=smart, 1=never, 2=always)?" );
-                       switch( atoi( line )) {
-                       case 0:
-                               ldap_set_cache_options( ld, 0 );
-                               break;
-                       case 1:
-                               ldap_set_cache_options( ld,
-                                       LDAP_CACHE_OPT_CACHENOERRS );
-                               break;
-                       case 2:
-                               ldap_set_cache_options( ld,
-                                       LDAP_CACHE_OPT_CACHEALLERRS );
-                               break;
-                       default:
-                               printf( "not a valid cache option\n" );
-                       }
-#endif /* LDAP_NOCACHE */
-                       break;
-
                case '?':       /* help */
-    printf( "Commands: [ad]d         [ab]andon         [b]ind\n" );
-    printf( "          [B]ind async  [c]ompare\n" );
-    printf( "          [modi]fy      [modr]dn          [rem]ove\n" );
-    printf( "          [res]ult      [s]earch          [q]uit/unbind\n\n" );
-    printf( "          [d]ebug       [e]nable cache    set ms[g]id\n" );
-    printf( "          d[n]suffix    [t]imeout         [v]ersion\n" );
-    printf( "          [?]help       [o]ptions         [O]cache options\n" );
-    printf( "          [E]xplode dn  [p]arse LDAP URL\n" );
-    printf( "          [x]uncache entry  [X]uncache request\n" );
+                       printf(
+"Commands: [ad]d         [ab]andon         [b]ind\n"
+"          [B]ind async  [c]ompare\n"
+"          [modi]fy      [modr]dn          [rem]ove\n"
+"          [res]ult      [s]earch          [q]uit/unbind\n\n"
+"          [d]ebug       set ms[g]id\n"
+"          d[n]suffix    [t]imeout         [v]ersion\n"
+"          [?]help       [o]ptions"
+"          [E]xplode dn  [p]arse LDAP URL\n" );
                        break;
 
                default:
index e09ef637bec0e6f9d8b9db19bc48343b8cedb3ef..a34939abc06111a9e6a628db48909ebad8b79afb 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -93,12 +93,6 @@ ldap_ld_free(
                ldap_msgfree( lm );
        }
 
-#ifndef LDAP_NOCACHE
-       if ( ld->ld_cache != NULL ) {
-               ldap_destroy_cache( ld );
-               ld->ld_cache = NULL;
-       }
-#endif /* !LDAP_NOCACHE */
 
        if ( ld->ld_error != NULL ) {
                LDAP_FREE( ld->ld_error );
index fd18f64333858c373c25e715aeee503749314ad2..25345f588deea4c120344c2325f7fa23341b1df5 100644 (file)
@@ -12,8 +12,8 @@ XXDIR = $(srcdir)/../libldap
 XXSRCS    = apitest.c test.c \
        bind.c open.c result.c error.c compare.c search.c \
        controls.c messages.c references.c extended.c cyrus.c \
-       modify.c add.c modrdn.c delete.c abandon.c cache.c \
-       sasl.c sbind.c kbind.c unbind.c \
+       modify.c add.c modrdn.c delete.c abandon.c \
+       sasl.c sbind.c kbind.c unbind.c cancel.c \
        filter.c free.c sort.c passwd.c whoami.c \
        getdn.c getentry.c getattr.c getvalues.c addentry.c \
        request.c os-ip.c url.c sortctrl.c vlvctrl.c \
@@ -27,8 +27,8 @@ OBJS  = threads.lo rdwr.lo tpool.lo  \
        thr_pth.lo thr_stub.lo \
        bind.lo open.lo result.lo error.lo compare.lo search.lo \
        controls.lo messages.lo references.lo extended.lo cyrus.lo \
-       modify.lo add.lo modrdn.lo delete.lo abandon.lo cache.lo \
-       sasl.lo sbind.lo kbind.lo unbind.lo \
+       modify.lo add.lo modrdn.lo delete.lo abandon.lo \
+       sasl.lo sbind.lo kbind.lo unbind.lo cancel.lo \
        filter.lo free.lo sort.lo passwd.lo whoami.lo \
        getdn.lo getentry.lo getattr.lo getvalues.lo addentry.lo \
        request.lo os-ip.lo url.lo sortctrl.lo vlvctrl.lo \
index d4d28ad4b1bd56823ecf2d421a85d7d89b59665c..941e54b4261f92a03961b0d101af970c80a92f78 100644 (file)
@@ -173,9 +173,10 @@ rewrite_var_set(
  */
 static void 
 rewrite_var_free(
-                struct rewrite_var *var
+               void *v_var
 )
 {
+       struct rewrite_var *var = v_var;
        assert( var != NULL );
 
        assert( var->lv_name != NULL );
@@ -193,7 +194,7 @@ rewrite_var_delete(
                Avlnode *tree
 )
 {
-       avl_free( tree, ( AVL_FREE )rewrite_var_free );
+       avl_free( tree, rewrite_var_free );
        return REWRITE_SUCCESS;
 }