]> git.sur5r.net Git - openldap/commitdiff
ITS#3682, dup entry and free the DB's copy before sending it
authorHoward Chu <hyc@openldap.org>
Tue, 26 Apr 2005 02:01:19 +0000 (02:01 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 26 Apr 2005 02:01:19 +0000 (02:01 +0000)
servers/slapd/overlays/syncprov.c

index a88d4897da798e5dc5c5ac464110ce8970d63949..f184dd2815c7e57e2159013a32ba751573fb7380 100644 (file)
@@ -976,6 +976,12 @@ syncprov_matchops( Operation *op, opcookie *opc, int saveit )
        if ( op->o_tag != LDAP_REQ_ADD ) {
                op->o_bd->bd_info = (BackendInfo *)on->on_info;
                rc = be_entry_get_rw( op, fc.fdn, NULL, NULL, 0, &e );
+               /* If we're sending responses now, make a copy and unlock the DB */
+               if ( e && !saveit ) {
+                       Entry *e2 = entry_dup( e );
+                       be_entry_release_rw( op, e, 0 );
+                       e = e2;
+               }
                op->o_bd->bd_info = (BackendInfo *)on;
                if ( rc ) return;
        } else {