- "=> bdb_dn2id_matched( \"%s\" )\n", in->bv_val, 0, 0 );
-#else
- Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2id_matched( \"%s\" )\n", in->bv_val, 0, 0 );
-#endif
-
- DBTzero( &key );
- key.size = in->bv_len + 2;
- buf = ch_malloc( key.size );
- key.data = buf;
- dn.bv_val = buf+1;
- dn.bv_len = key.size - 2;
- AC_MEMCPY( dn.bv_val, in->bv_val, key.size - 1 );
-
- /* store the ID */
- DBTzero( &data );
- data.data = id;
- data.ulen = sizeof(ID);
- data.flags = DB_DBT_USERMEM;
-
- while(1) {
- dn.bv_val[-1] = DN_BASE_PREFIX;
-
- *id = NOID;
-
- /* lookup cache */
- cached_id = bdb_cache_find_entry_ndn2id(be, &bdb->bi_cache, &dn);
-
- if (cached_id != NOID) {
- rc = 0;
- *id = cached_id;
- if ( dn.bv_val != buf+1 ) {
- *id2 = *id;
- }
- break;
- } else {
- /* fetch it */
- rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags | flags );
- }
-
- if( rc == DB_NOTFOUND ) {
- struct berval pdn;
-
- if ( ! be_issuffix( be, &dn ) ) {
- dnParent( &dn, &pdn );
- } else {
-#ifdef NEW_LOGGING
- LDAP_LOG ( INDEX, DETAIL1,
- "<= bdb_dn2id_matched: no match\n", 0, 0, 0 );
-#else
- Debug( LDAP_DEBUG_TRACE,
- "<= bdb_dn2id_matched: no match\n",
- 0, 0, 0 );
-#endif
- break;
- }
-
- key.size = pdn.bv_len + 2;
- dn = pdn;
- key.data = pdn.bv_val - 1;
-
- } else if ( rc == 0 ) {
- if( data.size != sizeof( ID ) ) {
-#ifdef NEW_LOGGING
- LDAP_LOG ( INDEX, DETAIL1,
- "<= bdb_dn2id_matched: get size mismatch:"
- "expected %ld, got %ld\n",
- (long) sizeof(ID), (long) data.size, 0 );