ITS#963: Multimaster patch

This commit is contained in:
Kurt Zeilenga 2001-01-16 06:49:49 +00:00
parent ed9bacc1a6
commit 2a7036e5b0
2 changed files with 13 additions and 19 deletions

View file

@ -227,13 +227,10 @@ do_add( Connection *conn, Operation *op )
*/
if ( be->be_add ) {
/* do the update here */
#ifdef SLAPD_MULTIMASTER
if ( (be->be_lastmod == ON || (be->be_lastmod == UNDEFINED &&
global_lastmod == ON)) && (be->be_update_ndn == NULL ||
strcmp( be->be_update_ndn, op->o_ndn )) )
#else
if ( be->be_update_ndn == NULL ||
strcmp( be->be_update_ndn, op->o_ndn ) == 0 )
int repl_user = (be->be_update_ndn != NULL &&
strcmp( be->be_update_ndn, op->o_ndn ) == 0);
#ifndef SLAPD_MULTIMASTER
if ( be->be_update_ndn == NULL || repl_user )
#endif
{
int update = be->be_update_ndn != NULL;
@ -245,10 +242,8 @@ do_add( Connection *conn, Operation *op )
goto done;
}
#ifndef SLAPD_MULTIMASTER
if ( (be->be_lastmod == ON || (be->be_lastmod == UNDEFINED &&
global_lastmod == ON)) && !update )
#endif
global_lastmod == ON)) && !repl_user )
{
Modifications **modstail;
for( modstail = &mods;
@ -275,8 +270,7 @@ do_add( Connection *conn, Operation *op )
if ( (*be->be_add)( be, conn, op, e ) == 0 ) {
#ifdef SLAPD_MULTIMASTER
if (be->be_update_ndn == NULL ||
strcmp( be->be_update_ndn, op->o_ndn ))
if ( !repl_user )
#endif
{
replog( be, op, e->e_dn, e );

View file

@ -268,12 +268,13 @@ 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);
#ifndef SLAPD_MULTIMASTER
/* we don't have to check for replicator dn
* because we accept each modify request
/* Multimaster slapd does not have to check for replicator dn
* because it accepts each modify request
*/
if ( be->be_update_ndn == NULL ||
strcmp( be->be_update_ndn, op->o_ndn ) == 0 )
if ( be->be_update_ndn == NULL || repl_user )
#endif
{
int update = be->be_update_ndn != NULL;
@ -287,7 +288,7 @@ do_modify(
}
if ( (be->be_lastmod == ON || (be->be_lastmod == UNDEFINED &&
global_lastmod == ON)) && !update )
global_lastmod == ON)) && !repl_user )
{
Modifications **modstail;
for( modstail = &mods;
@ -308,8 +309,7 @@ do_modify(
if ( (*be->be_modify)( be, conn, op, dn, ndn, mods ) == 0
#ifdef SLAPD_MULTIMASTER
&& ( be->be_update_ndn == NULL ||
strcmp( be->be_update_ndn, op->o_ndn ) != 0 )
&& !repl_user
#endif
) {
/* but we log only the ones not from a replicator user */