]> git.sur5r.net Git - openldap/commitdiff
ITS#5451 glue deadlock fix
authorHoward Chu <hyc@openldap.org>
Mon, 28 Apr 2008 12:53:04 +0000 (12:53 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 28 Apr 2008 12:53:04 +0000 (12:53 +0000)
servers/slapd/overlays/syncprov.c

index dade31d5aa21e1734a45581757e05aad7dfb5c61..9ca4153f7c59dfb59157f0279ddc43e6b9abc30b 100644 (file)
@@ -2396,7 +2396,14 @@ syncprov_operational(
 
                                if ( !ap ) {
                                        if ( !(rs->sr_flags & REP_ENTRY_MODIFIABLE) ) {
-                                               rs->sr_entry = entry_dup( rs->sr_entry );
+                                               Entry *e = entry_dup( rs->sr_entry );
+                                               if ( rs->sr_flags & REP_ENTRY_MUSTRELEASE ) {
+                                                       overlay_entry_release_ov( op, rs->sr_entry, 0, on );
+                                                       rs->sr_flags ^= REP_ENTRY_MUSTRELEASE;
+                                               } else if ( rs->sr_flags & REP_ENTRY_MUSTBEFREED ) {
+                                                       entry_free( rs->sr_entry );
+                                               }
+                                               rs->sr_entry = e;
                                                rs->sr_flags |=
                                                        REP_ENTRY_MODIFIABLE|REP_ENTRY_MUSTBEFREED;
                                                a = attr_find( rs->sr_entry->e_attrs,