From: Kurt Zeilenga Date: Wed, 6 Jun 2001 22:17:57 +0000 (+0000) Subject: Check for duplicate entries X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~1356 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6a647d917fac4e0b598af9aa0938479af71a1bfb;p=openldap Check for duplicate entries --- diff --git a/servers/slapd/back-ldbm/tools.c b/servers/slapd/back-ldbm/tools.c index 4bae7a4c9c..5327af5a05 100644 --- a/servers/slapd/back-ldbm/tools.c +++ b/servers/slapd/back-ldbm/tools.c @@ -157,6 +157,7 @@ ID ldbm_tool_entry_put( struct ldbminfo *li = (struct ldbminfo *) be->be_private; Datum key, data; int rc, len; + ID id; assert( slapMode & SLAP_TOOL_MODE ); assert( id2entry != NULL ); @@ -169,21 +170,33 @@ ID ldbm_tool_entry_put( #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY, - "ldbm_tool_entry_put: (%s)%ld\n", e->e_dn, e->e_id )); + "ldbm_tool_entry_put: (%s)%ld\n", e->e_dn, e->e_id )); #else Debug( LDAP_DEBUG_TRACE, "=> ldbm_tool_entry_put( %ld, \"%s\" )\n", e->e_id, e->e_dn, 0 ); #endif + id = dn2id( be, e->e_ndn ); + if( id != NOID ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY, + "ldbm_tool_entry_put: \"%s\" already exists (id=%ld)\n", + e->e_dn, id )); +#else + Debug( LDAP_DEBUG_TRACE, + "<= ldbm_tool_entry_put: \"%s\" already exists (id=%ld)\n", + e->e_ndn, id, 0 ); +#endif + return NOID; + } - rc = index_entry_add( be, e, e->e_attrs ); + rc = index_entry_add( be, e, e->e_attrs ); if( rc != 0 ) { return NOID; } rc = dn2id_add( be, e->e_ndn, e->e_id ); - if( rc != 0 ) { return NOID; }