]> git.sur5r.net Git - openldap/commitdiff
Import ITS#3365 fix from HEAD
authorHoward Chu <hyc@openldap.org>
Mon, 29 Nov 2004 00:02:56 +0000 (00:02 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 29 Nov 2004 00:02:56 +0000 (00:02 +0000)
servers/slapd/backend.c

index 026c620f61b6f115027629660ff713f8c1bc0f83..bbf1405a5996a27cb70656f01f83382e86d57e3b 100644 (file)
@@ -1336,10 +1336,15 @@ backend_group(
                                Filter *filter;
                                Entry *user;
                                Backend *b2 = op->o_bd;
+                               void *o_private = op->o_private;
 
                                if ( target && dn_match( &target->e_nname, op_ndn ) ) {
                                        user = target;
                                } else {
+                                       /* back-bdb stored lockinfo here, we saved it
+                                        * above. Clear it out so that a new lock can be used.
+                                        */
+                                       op->o_private = NULL;
                                        op->o_bd = select_backend( op_ndn, 0, 0 );
                                        rc = be_entry_get_rw(op, op_ndn, NULL, NULL, 0, &user );
                                }
@@ -1404,6 +1409,8 @@ loopit:
                                        }
                                        if ( user != target ) {
                                                be_entry_release_r( op, user );
+                                               /* restore previous lockinfo, if any */
+                                               op->o_private = o_private;
                                        }
                                }
                                op->o_bd = b2;