]> git.sur5r.net Git - openldap/commitdiff
Ignore attempts to Add cn=schema,cn=config
authorHoward Chu <hyc@openldap.org>
Sat, 21 Nov 2009 07:13:48 +0000 (07:13 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 21 Nov 2009 07:13:48 +0000 (07:13 +0000)
servers/slapd/bconfig.c

index 7b692971c498565af08dbe08ee30f2b6b2d94843..7dee51a505810a064e41b55a5a4529edcff6be6b 100644 (file)
@@ -4705,6 +4705,9 @@ config_add_internal( CfBackInfo *cfb, Entry *e, ConfigArgs *ca, SlapReply *rs,
                        Debug( LDAP_DEBUG_TRACE, "%s: config_add_internal: "
                                "DN=\"%s\" already exists\n",
                                log_prefix, e->e_name.bv_val, 0 );
+                       /* global schema ignores all writes */
+                       if ( ce->ce_type == Cft_Schema && ce->ce_parent->ce_type == Cft_Global )
+                               return LDAP_COMPARE_TRUE;
                        return LDAP_ALREADY_EXISTS;
                }
        }
@@ -5190,7 +5193,14 @@ out2:;
        ldap_pvt_thread_pool_resume( &connection_pool );
 
 out:;
-       send_ldap_result( op, rs );
+       {       int repl = op->o_dont_replicate;
+               if ( rs->sr_err == LDAP_COMPARE_TRUE ) {
+                       rs->sr_err = LDAP_SUCCESS;
+                       op->o_dont_replicate = 1;
+               }
+               send_ldap_result( op, rs );
+               op->o_dont_replicate = repl;
+       }
        slap_graduate_commit_csn( op );
        return rs->sr_err;
 }