Skip to content
Snippets Groups Projects
Commit 2a7036e5 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

ITS#963: Multimaster patch

parent ed9bacc1
Branches
Tags
No related merge requests found
......@@ -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 );
......
......@@ -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 */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment