]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/compare.c
Added bdb_attribute and bdb_group ACL support routines
[openldap] / servers / slapd / back-bdb / compare.c
index 0d56a69ef40d64f801a97eab57b1563af748fb8d..42164ac577c8525334fc7e044280e9b2043715e7 100644 (file)
@@ -36,6 +36,7 @@ bdb_compare(
 
        switch( rc ) {
        case DB_NOTFOUND:
+       case 0:
                break;
        default:
                rc = LDAP_OTHER;
@@ -45,27 +46,27 @@ bdb_compare(
 
        if ( e == NULL ) {
                char *matched_dn = NULL;
-               struct berval **refs = NULL;
+               struct berval **refs;
 
                if ( matched != NULL ) {
                        matched_dn = ch_strdup( matched->e_dn );
                        refs = is_entry_referral( matched )
-                               ? get_entry_referrals( be, conn, op, matched )
+                               ? get_entry_referrals( be, conn, op, matched,
+                                       dn, LDAP_SCOPE_DEFAULT )
                                : NULL;
                        bdb_entry_return( be, matched );
                        matched = NULL;
 
                } else {
-                       refs = default_referral;
+                       refs = referral_rewrite( default_referral,
+                               NULL, dn, LDAP_SCOPE_DEFAULT );
                }
 
                send_ldap_result( conn, op, rc = LDAP_REFERRAL,
                        matched_dn, NULL, refs, NULL );
 
-               if( matched != NULL ) {
-                       ber_bvecfree( refs );
-                       free( matched_dn );
-               }
+               ber_bvecfree( refs );
+               free( matched_dn );
 
                goto done;
        }
@@ -73,7 +74,7 @@ bdb_compare(
        if (!manageDSAit && is_entry_referral( e ) ) {
                /* entry is a referral, don't allow add */
                struct berval **refs = get_entry_referrals( be,
-                       conn, op, e );
+                       conn, op, e, dn, LDAP_SCOPE_DEFAULT );
 
                Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
                        0, 0 );