]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/syncrepl.c
slight improvements; doesn't work yet
[openldap] / servers / slapd / syncrepl.c
index 9a53d86c498a44228734dd6b50fc05c504edfb92..ea3da5f929513ec5e2990d86f6fd69234fc3e842 100644 (file)
@@ -522,6 +522,7 @@ do_syncrep2(
                                }
                                if ( rc_efree && entry ) {
                                        entry_free( entry );
+                                       entry = NULL;
                                }
                                break;
 
@@ -1093,6 +1094,7 @@ syncrepl_entry(
                syncUUID->bv_val, syncUUID->bv_len );
        op->ors_filterstr.bv_val[op->ors_filterstr.bv_len] = '\0';
 
+       op->o_tag = LDAP_REQ_SEARCH;
        op->ors_scope = LDAP_SCOPE_SUBTREE;
 
        /* get syncrepl cookie of shadow replica from subentry */
@@ -1106,7 +1108,9 @@ syncrepl_entry(
 
        si->si_syncUUID_ndn.bv_val = NULL;
 
-       rc = be->be_search( op, &rs );
+       if ( limits_check( op, &rs ) == 0 ) {
+               rc = be->be_search( op, &rs );
+       }
 
        if ( op->ors_filterstr.bv_val ) {
                sl_free( op->ors_filterstr.bv_val, op->o_tmpmemctx );
@@ -1260,7 +1264,7 @@ syncrepl_entry(
 
        case LDAP_SYNC_DELETE :
                /* Already deleted */
-               ret = 1;
+               ret = 0;
                goto done;
 
        default :
@@ -1336,7 +1340,11 @@ syncrepl_del_nonpresent(
 
        op->o_nocaching = 1;
        op->o_managedsait = 0;
-       be->be_search( op, &rs );
+
+       if ( limits_check( op, &rs ) == 0 ) {
+               be->be_search( op, &rs );
+       }
+
        op->o_managedsait = 1;
        op->o_nocaching = 0;
 
@@ -1863,7 +1871,8 @@ null_callback(
        if ( rs->sr_err != LDAP_SUCCESS &&
                rs->sr_err != LDAP_REFERRAL &&
                rs->sr_err != LDAP_ALREADY_EXISTS &&
-               rs->sr_err != LDAP_NO_SUCH_OBJECT )
+               rs->sr_err != LDAP_NO_SUCH_OBJECT &&
+               rs->sr_err != LDAP_NOT_ALLOWED_ON_NONLEAF )
        {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, ERR,