X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Finit.c;h=4b5f012335680ce0b15eeeceaa1501cfab4fa4db;hb=3a9310431e4e90005c1d7573c2b8f492cbf0cd0d;hp=32289e73899c55193035e4ad34067f543f1e2210;hpb=a56a8540fd158794fbab3549739239f9527b6b80;p=openldap diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index 32289e7389..4b5f012335 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -26,6 +26,7 @@ #include #include #include "alock.h" +#include "config.h" static const struct bdbi_database { char *file; @@ -46,7 +47,7 @@ typedef void * db_realloc(void *, size_t); #define bdb_db_close BDB_SYMBOL(db_close) static int -bdb_db_init( BackendDB *be ) +bdb_db_init( BackendDB *be, ConfigReply *cr ) { struct bdb_info *bdb; int rc; @@ -93,10 +94,10 @@ bdb_db_init( BackendDB *be ) } static int -bdb_db_close( BackendDB *be ); +bdb_db_close( BackendDB *be, ConfigReply *cr ); static int -bdb_db_open( BackendDB *be ) +bdb_db_open( BackendDB *be, ConfigReply *cr ) { int rc, i; struct bdb_info *bdb = (struct bdb_info *) be->be_private; @@ -121,8 +122,11 @@ bdb_db_open( BackendDB *be ) #ifndef BDB_MULTIPLE_SUFFIXES if ( be->be_suffix[1].bv_val ) { - Debug( LDAP_DEBUG_ANY, - LDAP_XSTRING(bdb_db_open) ": only one suffix allowed\n", 0, 0, 0 ); + if (cr) { + snprintf(cr->msg, sizeof(cr->msg), "only one suffix allowed"); + Debug( LDAP_DEBUG_ANY, + LDAP_XSTRING(bdb_db_open) ": %s\n", cr->msg, 0, 0 ); + } return -1; } #endif @@ -133,7 +137,7 @@ bdb_db_open( BackendDB *be ) Debug( LDAP_DEBUG_ANY, LDAP_XSTRING(bdb_db_open) ": Cannot access database directory %s (%d)\n", bdb->bi_dbenv_home, errno, 0 ); - return -1; + return -1; } /* Perform database use arbitration/recovery logic */ @@ -456,9 +460,10 @@ shm_retry: if ( !e ) { e = entry_alloc(); e->e_id = 0; - ber_dupbv( &e->e_name, &slap_empty_bv ); - ber_dupbv( &e->e_nname, &slap_empty_bv ); + ber_dupbv( &e->e_name, (struct berval *)&slap_empty_bv ); + ber_dupbv( &e->e_nname, (struct berval *)&slap_empty_bv ); } + e->e_ocflags = SLAP_OC_GLUE|SLAP_OC__END; e->e_private = &bdb->bi_cache.c_dntree; bdb->bi_cache.c_dntree.bei_e = e; @@ -473,12 +478,12 @@ shm_retry: return 0; fail: - bdb_db_close( be ); + bdb_db_close( be, NULL ); return rc; } static int -bdb_db_close( BackendDB *be ) +bdb_db_close( BackendDB *be, ConfigReply *cr ) { int rc; struct bdb_info *bdb = (struct bdb_info *) be->be_private; @@ -573,7 +578,7 @@ bdb_db_close( BackendDB *be ) } static int -bdb_db_destroy( BackendDB *be ) +bdb_db_destroy( BackendDB *be, ConfigReply *cr ) { struct bdb_info *bdb = (struct bdb_info *) be->be_private;