]> git.sur5r.net Git - openldap/commitdiff
check for update dn
authorPierangelo Masarati <ando@openldap.org>
Fri, 16 Nov 2001 11:47:15 +0000 (11:47 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 16 Nov 2001 11:47:15 +0000 (11:47 +0000)
servers/slapd/add.c
servers/slapd/backend.c
servers/slapd/delete.c
servers/slapd/modify.c
servers/slapd/modrdn.c
servers/slapd/proto-slap.h

index 6d733cf81d5bdd85cd95b23b2589de34cbeeba5c..9399d5d4a08964b32928d0ceeb84fb79d5e232ee 100644 (file)
@@ -241,8 +241,7 @@ do_add( Connection *conn, Operation *op )
         */
        if ( be->be_add ) {
                /* do the update here */
-               int repl_user = (be->be_update_ndn != NULL &&
-                       strcmp( be->be_update_ndn, op->o_ndn ) == 0);
+               int repl_user = be_isupdate(be, op->o_ndn );
 #ifndef SLAPD_MULTIMASTER
                if ( be->be_update_ndn == NULL || repl_user )
 #endif
index feac0e595d5df64946a5cdb87391df2519f73d98..86a787b76f081826eda81749b2ee08aa1f1f896c 100644 (file)
@@ -584,6 +584,24 @@ be_isroot( Backend *be, const char *ndn )
        return(rc);
 }
 
+int
+be_isupdate( Backend *be, const char *ndn )
+{
+       int rc;
+
+       if ( ndn == NULL || *ndn == '\0' ) {
+               return( 0 );
+       }
+
+       if ( be->be_update_ndn == NULL || *be->be_update_ndn == '\0' ) {
+               return( 0 );
+       }
+
+       rc = strcmp( be->be_update_ndn, ndn ) ? 0 : 1;
+
+       return(rc);
+}
+
 char *
 be_root_dn( Backend *be )
 {
index 433e20855b929c0e9b52de4cbd43d20c8ba2f92a..5d10e369d7a00c04fcb7ecfb8d5a8b3a50a53df2 100644 (file)
@@ -161,14 +161,13 @@ do_delete(
        if ( be->be_delete ) {
                /* do the update here */
 #ifndef SLAPD_MULTIMASTER
-               if ( be->be_update_ndn == NULL ||
-                       strcmp( be->be_update_ndn, op->o_ndn ) == 0 )
+               int repl_user = be_isupdate( be, op->o_ndn );
+               if ( be->be_update_ndn == NULL || repl_user )
 #endif
                {
                        if ( (*be->be_delete)( be, conn, op, dn, ndn ) == 0 ) {
 #ifdef SLAPD_MULTIMASTER
-                               if (be->be_update_ndn == NULL ||
-                                       strcmp( be->be_update_ndn, op->o_ndn ))
+                               if (be->be_update_ndn == NULL || !repl_user )
 #endif
                                {
                                        replog( be, op, dn, NULL );
index e2086b81a517f61c69390b54a6140314133e394f..62646360070f38aa97b848be8d01bce22e661c91 100644 (file)
@@ -287,8 +287,7 @@ do_modify(
         */
        if ( be->be_modify ) {
                /* do the update here */
-               int repl_user = (be->be_update_ndn != NULL &&
-                       strcmp( be->be_update_ndn, op->o_ndn ) == 0);
+               int repl_user = be_isupdate( be, op->o_ndn );
 #ifndef SLAPD_MULTIMASTER
                /* Multimaster slapd does not have to check for replicator dn
                 * because it accepts each modify request
index 82908716c7a95d6ebf4883652c411a0729de3867..0ae0916fb95b188187e3587c730c79747e28e895 100644 (file)
@@ -306,15 +306,14 @@ do_modrdn(
        if ( be->be_modrdn ) {
                /* do the update here */
 #ifndef SLAPD_MULTIMASTER
-               if ( be->be_update_ndn == NULL ||
-                       strcmp( be->be_update_ndn, op->o_ndn ) == 0 )
+               int repl_user = be_isupdate( be, op->o_ndn );
+               if ( be->be_update_ndn == NULL || repl_user )
 #endif
                {
                        if ( (*be->be_modrdn)( be, conn, op, dn, ndn, newrdn,
                            deloldrdn, newSuperior ) == 0
 #ifdef SLAPD_MULTIMASTER
-                               && ( be->be_update_ndn == NULL ||
-                                       strcmp( be->be_update_ndn, op->o_ndn ) )
+                               && ( be->be_update_ndn == NULL || !repl_user )
 #endif
                        ) {
                                struct replog_moddn moddn;
index 0b60f5e6935a7fa0ebec9218954dd837fd37dfb2..e8f3d6ffa391fd40e59106ebe5ba680cb8304c27 100644 (file)
@@ -158,6 +158,7 @@ LDAP_SLAPD_F (int) be_issuffix LDAP_P(( Backend *be, const char *suffix ));
 LDAP_SLAPD_F (int) be_isroot LDAP_P(( Backend *be, const char *ndn ));
 LDAP_SLAPD_F (int) be_isroot_pw LDAP_P(( Backend *be,
        Connection *conn, const char *ndn, struct berval *cred ));
+LDAP_SLAPD_F (int) be_isupdate LDAP_P(( Backend *be, const char *ndn ));
 LDAP_SLAPD_F (char *) be_root_dn LDAP_P(( Backend *be ));
 LDAP_SLAPD_F (int) be_entry_release_rw LDAP_P((
        BackendDB *be, Connection *c, Operation *o, Entry *e, int rw ));