From d57b404889e51f7ad4010095b8186f95db8e5ea6 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sat, 12 Jun 2004 12:27:22 +0000 Subject: [PATCH] back-hdb fixes for ITS#3063 --- servers/slapd/back-bdb/dn2id.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/servers/slapd/back-bdb/dn2id.c b/servers/slapd/back-bdb/dn2id.c index 19dc5d3074..528c57815f 100644 --- a/servers/slapd/back-bdb/dn2id.c +++ b/servers/slapd/back-bdb/dn2id.c @@ -630,6 +630,18 @@ hdb_dn2id_add( key.size = sizeof(ID); key.flags = DB_DBT_USERMEM; + /* Need to make dummy root node once. Subsequent attempts + * will fail harmlessly. + */ + if ( eip->bei_id == 0 ) { + diskNode dummy = {0}; + data.data = &dummy; + data.size = sizeof(diskNode); + data.flags = DB_DBT_USERMEM; + + db->put( db, txn, &key, &data, DB_NODUPDATA ); + } + #ifdef SLAP_IDL_CACHE if ( bdb->bi_idl_cache_size ) { bdb_idl_cache_del( bdb, db, &key ); @@ -1102,7 +1114,7 @@ hdb_dn2idl( #endif cx.id = e->e_id; - cx.ei = BEI(e); + cx.ei = e->e_id ? BEI(e) : &bdb->bi_cache.c_dntree; cx.bdb = bdb; cx.db = cx.bdb->bi_dn2id->bdi_db; cx.prefix = op->ors_scope == LDAP_SCOPE_ONELEVEL -- 2.39.5