bdb->bi_cache.c_maxsize = DEFAULT_CACHE_SIZE;
bdb->bi_lock_detect = DB_LOCK_DEFAULT;
+ bdb->bi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
+ bdb->bi_search_stack = NULL;
#ifdef LDAP_CLIENT_UPDATE
LDAP_LIST_INIT (&bdb->psearch_list);
#endif
be->be_private = bdb;
+
return 0;
}
)
{
unsigned char *u, *c;
- int i;
+ int i, x;
u = usrkey->data;
c = curkey->data;
for( i = sizeof(ID)-1; i >= 0; i--)
#endif
{
- if( u[i] - c[i] )
- return u[i] - c[i];
+ x = u[i] - c[i];
+ if( x ) return x;
}
+
return 0;
}
bdb->bi_dbenv->set_errcall( bdb->bi_dbenv, bdb_errcall );
bdb->bi_dbenv->set_lk_detect( bdb->bi_dbenv, bdb->bi_lock_detect );
+#ifdef SLAP_IDL_CACHE
+ if ( bdb->bi_idl_cache_max_size ) {
+ ldap_pvt_thread_mutex_init( &bdb->bi_idl_tree_mutex );
+ bdb->bi_idl_cache_size = 0;
+ }
+#endif
+
#ifdef BDB_SUBDIRS
{
char dir[MAXPATHLEN];
int rc;
struct bdb_info *bdb = (struct bdb_info *) be->be_private;
struct bdb_db_info *db;
+#ifdef SLAP_IDL_CACHE
+ bdb_idl_cache_entry_t *entry, *next_entry;
+#endif
while( bdb->bi_ndatabases-- ) {
db = bdb->bi_databases[bdb->bi_ndatabases];
bdb_cache_release_all (&bdb->bi_cache);
+#ifdef SLAP_IDL_CACHE
+ ldap_pvt_thread_mutex_lock ( &bdb->bi_idl_tree_mutex );
+ entry = bdb->bi_idl_lru_head;
+ while ( entry != NULL ) {
+ next_entry = entry->idl_lru_next;
+ free( entry->idl );
+ free( entry->kstr.bv_val );
+ free( entry );
+ entry = next_entry;
+ }
+ ldap_pvt_thread_mutex_unlock ( &bdb->bi_idl_tree_mutex );
+#endif
+
return 0;
}
{
static char *controls[] = {
LDAP_CONTROL_MANAGEDSAIT,
-#ifdef LDAP_CONTROL_SUBENTRIES
- LDAP_CONTROL_SUBENTRIES,
-#endif
-#ifdef LDAP_CONTROL_NOOP
LDAP_CONTROL_NOOP,
-#endif
-#ifdef LDAP_CONTROL_VALUESRETURNFILTER
+ LDAP_CONTROL_PAGEDRESULTS,
LDAP_CONTROL_VALUESRETURNFILTER,
+#ifdef LDAP_CONTROL_SUBENTRIES
+ LDAP_CONTROL_SUBENTRIES,
#endif
#ifdef LDAP_CLIENT_UPDATE
LDAP_CONTROL_CLIENT_UPDATE,