X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fmodify.c;h=1316668523a109401505a491236c4e6c93e8356d;hb=6147119dc8526a758a7c576940fe8483e2b93915;hp=7f4a34b0deb66b87fa385195c0cb469a013c986a;hpb=17a975b6fbccec9e215d090cb3646cb914dd8241;p=openldap diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index 7f4a34b0de..1316668523 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -1,3 +1,7 @@ +/* + * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ /* * Copyright (c) 1995 Regents of the University of Michigan. * All rights reserved. @@ -158,7 +162,7 @@ do_modify( return rc; } - Statslog( LDAP_DEBUG_STATS, "conn=%d op=%d MOD dn=\"%s\"\n", + Statslog( LDAP_DEBUG_STATS, "conn=%ld op=%d MOD dn=\"%s\"\n", op->o_connid, op->o_opid, ndn, 0, 0 ); /* @@ -185,8 +189,13 @@ do_modify( */ if ( be->be_modify ) { /* do the update here */ +#ifndef SLAPD_MULTIMASTER + /* we don't have to check for replicator dn + * because we accept each modify request + */ if ( be->be_update_ndn == NULL || strcmp( be->be_update_ndn, op->o_ndn ) == 0 ) +#endif { if ( (be->be_lastmod == ON || (be->be_lastmod == UNDEFINED && global_lastmod == ON)) && be->be_update_ndn == NULL ) @@ -203,14 +212,23 @@ do_modify( } } - if ( (*be->be_modify)( be, conn, op, ndn, modlist ) == 0 ) { + if ( (*be->be_modify)( be, conn, op, ndn, modlist ) == 0 +#ifdef SLAPD_MULTIMASTER + && ( be->be_update_ndn == NULL || + strcmp( be->be_update_ndn, op->o_ndn ) != 0 ) +#endif + ) { + /* but we log only the ones not from a replicator user */ replog( be, op, ndn, modlist ); } +#ifndef SLAPD_MULTIMASTER /* send a referral */ } else { send_ldap_result( conn, op, rc = LDAP_REFERRAL, NULL, NULL, - be->be_update_refs ? be->be_update_refs : default_referral, NULL ); + be->be_update_refs ? be->be_update_refs : default_referral, + NULL ); +#endif } } else { send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM,