mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-28 10:39:34 -05:00
ITS#963: Multimaster patch
This commit is contained in:
parent
ed9bacc1a6
commit
2a7036e5b0
2 changed files with 13 additions and 19 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Reference in a new issue