version 1.150, 2006/05/11 08:46:44
|
version 1.151, 2006/05/26 10:08:15
|
Line 1
|
Line 1
|
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.149 2006/05/02 03:08:59 hyc Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.150 2006/05/11 08:46:44 hyc Exp $ */ |
/* syncprov.c - syncrepl provider */ |
/* syncprov.c - syncrepl provider */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
Line 1055 syncprov_matchops( Operation *op, opcook
|
Line 1055 syncprov_matchops( Operation *op, opcook
|
int rc; |
int rc; |
struct berval newdn; |
struct berval newdn; |
int freefdn = 0; |
int freefdn = 0; |
|
BackendDB *b0 = op->o_bd, db; |
|
|
fc.fdn = &op->o_req_ndn; |
fc.fdn = &op->o_req_ndn; |
/* compute new DN */ |
/* compute new DN */ |
Line 1067 syncprov_matchops( Operation *op, opcook
|
Line 1068 syncprov_matchops( Operation *op, opcook
|
freefdn = 1; |
freefdn = 1; |
} |
} |
if ( op->o_tag != LDAP_REQ_ADD ) { |
if ( op->o_tag != LDAP_REQ_ADD ) { |
|
if ( !SLAP_ISOVERLAY( op->o_bd )) { |
|
db = *op->o_bd; |
|
op->o_bd = &db; |
|
} |
op->o_bd->bd_info = (BackendInfo *)on->on_info; |
op->o_bd->bd_info = (BackendInfo *)on->on_info; |
rc = be_entry_get_rw( op, fc.fdn, NULL, NULL, 0, &e ); |
rc = be_entry_get_rw( op, fc.fdn, NULL, NULL, 0, &e ); |
/* If we're sending responses now, make a copy and unlock the DB */ |
/* If we're sending responses now, make a copy and unlock the DB */ |
Line 1076 syncprov_matchops( Operation *op, opcook
|
Line 1081 syncprov_matchops( Operation *op, opcook
|
e = e2; |
e = e2; |
} |
} |
op->o_bd->bd_info = (BackendInfo *)on; |
op->o_bd->bd_info = (BackendInfo *)on; |
if ( rc ) return; |
if ( rc ) { |
|
op->o_bd = b0; |
|
return; |
|
} |
} else { |
} else { |
e = op->ora_e; |
e = op->ora_e; |
} |
} |
Line 1174 syncprov_matchops( Operation *op, opcook
|
Line 1182 syncprov_matchops( Operation *op, opcook
|
if ( freefdn ) { |
if ( freefdn ) { |
op->o_tmpfree( fc.fdn->bv_val, op->o_tmpmemctx ); |
op->o_tmpfree( fc.fdn->bv_val, op->o_tmpmemctx ); |
} |
} |
|
op->o_bd = b0; |
} |
} |
|
|
static int |
static int |