work around syncprov interoperation issues; minor cleanup

This commit is contained in:
Pierangelo Masarati 2005-06-01 19:35:13 +00:00
parent 16e42fc78c
commit 3751f0325d
12 changed files with 60 additions and 20 deletions

View file

@ -1494,7 +1494,7 @@ done:;
}
if ( !BER_BVISNULL( &p.e_nname ) ) {
entry_clean( &p );
backsql_entry_clean( op, &p );
}
Debug( LDAP_DEBUG_TRACE, "<==backsql_add(\"%s\"): %d \"%s\"\n",

View file

@ -106,7 +106,7 @@ error_return:;
}
if ( !BER_BVISNULL( &e.e_nname ) ) {
entry_clean( &e );
backsql_entry_clean( op, &e );
}
if ( bsi.bsi_attrs != NULL ) {

View file

@ -181,7 +181,7 @@ return_results:;
}
if ( !BER_BVISNULL( &e.e_nname ) ) {
entry_clean( &e );
backsql_entry_clean( op, &e );
}
if ( bsi.bsi_attrs != NULL ) {

View file

@ -474,11 +474,11 @@ done:;
}
if ( !BER_BVISNULL( &d.e_nname ) ) {
entry_clean( &d );
backsql_entry_clean( op, &d );
}
if ( !BER_BVISNULL( &p.e_nname ) ) {
entry_clean( &p );
backsql_entry_clean( op, &p );
}
return rs->sr_err;

View file

@ -862,7 +862,7 @@ backsql_id2entry( backsql_srch_info *bsi, backsql_entryID *eid )
&bsi->bsi_oc->bom_oc->soc_cname,
bsi->bsi_op->o_tmpmemctx );
if ( rc != LDAP_SUCCESS ) {
entry_clean( bsi->bsi_e );
backsql_entry_clean( op, bsi->bsi_e );
return rc;
}
@ -966,7 +966,7 @@ next:;
"structural_class() failed %d (%s)\n",
bsi->bsi_e->e_name.bv_val,
rc, text ? text : "" );
entry_clean( bsi->bsi_e );
backsql_entry_clean( op, bsi->bsi_e );
return rc;
}
@ -977,7 +977,7 @@ next:;
"to entry\n",
bsi->bsi_e->e_name.bv_val, soc.bv_val,
bsi->bsi_oc->bom_oc->soc_cname.bv_val );
entry_clean( bsi->bsi_e );
backsql_entry_clean( op, bsi->bsi_e );
return rc;
}
}
@ -987,7 +987,7 @@ next:;
&bsi->bsi_oc->bom_oc->soc_cname,
bsi->bsi_op->o_tmpmemctx );
if ( rc != LDAP_SUCCESS ) {
entry_clean( bsi->bsi_e );
backsql_entry_clean( op, bsi->bsi_e );
return rc;
}
}

View file

@ -74,6 +74,7 @@ sql_back_initialize(
bi->bi_chk_referrals = 0;
bi->bi_operational = backsql_operational;
bi->bi_entry_get_rw = backsql_entry_get;
bi->bi_entry_release_rw = backsql_entry_release;
bi->bi_connection_init = 0;
bi->bi_connection_destroy = backsql_connection_destroy;

View file

@ -158,7 +158,7 @@ backsql_modify( Operation *op, SlapReply *rs )
if ( BACKSQL_CHECK_SCHEMA( bi ) ) {
char textbuf[ SLAP_TEXT_BUFLEN ] = { '\0' };
entry_clean( &m );
backsql_entry_clean( op, &m );
bsi.bsi_e = &m;
rs->sr_err = backsql_id2entry( &bsi, &bsi.bsi_base_id );
@ -212,7 +212,7 @@ done:;
}
if ( !BER_BVISNULL( &m.e_nname ) ) {
entry_clean( &m );
backsql_entry_clean( op, &m );
}
if ( bsi.bsi_attrs != NULL ) {

View file

@ -449,7 +449,7 @@ backsql_modrdn( Operation *op, SlapReply *rs )
if ( BACKSQL_CHECK_SCHEMA( bi ) ) {
char textbuf[ SLAP_TEXT_BUFLEN ] = { '\0' };
entry_clean( &r );
backsql_entry_clean( op, &r );
(void)backsql_free_entryID( op, &e_id, 0 );
bsi.bsi_e = &r;
@ -574,15 +574,15 @@ done:;
}
if ( !BER_BVISNULL( &r.e_nname ) ) {
entry_clean( &r );
backsql_entry_clean( op, &r );
}
if ( !BER_BVISNULL( &p.e_nname ) ) {
entry_clean( &p );
backsql_entry_clean( op, &p );
}
if ( !BER_BVISNULL( &n.e_nname ) ) {
entry_clean( &n );
backsql_entry_clean( op, &n );
}
Debug( LDAP_DEBUG_TRACE, "<==backsql_modrdn()\n", 0, 0, 0 );

View file

@ -169,6 +169,8 @@ int backsql_init_search( backsql_srch_info *bsi,
Operation *op, SlapReply *rs, AttributeName *attrs,
unsigned flags );
void backsql_entry_clean( Operation *op, Entry *e );
/*
* sql-wrap.h
*/
@ -283,6 +285,7 @@ extern BI_op_delete backsql_delete;
extern BI_operational backsql_operational;
extern BI_entry_get_rw backsql_entry_get;
extern BI_entry_release_rw backsql_entry_release;
extern BI_connection_destroy backsql_connection_destroy;

View file

@ -1,4 +1,3 @@
DROP TABLE ldap_referrals;
DROP TABLE ldap_entry_objclasses;
DROP TABLE ldap_attr_mappings;
DROP TABLE ldap_entries;

View file

@ -3,3 +3,4 @@ DROP TABLE institutes;
DROP TABLE documents;
DROP TABLE authors_docs;
DROP TABLE phones;
DROP TABLE referrals;

View file

@ -2096,7 +2096,7 @@ backsql_search( Operation *op, SlapReply *rs )
} else {
rs->sr_err = LDAP_OTHER;
}
entry_clean( &user_entry2 );
backsql_entry_clean( op, &user_entry2 );
}
if ( bsi2.bsi_attrs != NULL ) {
op->o_tmpfree( bsi2.bsi_attrs,
@ -2218,7 +2218,7 @@ backsql_search( Operation *op, SlapReply *rs )
next_entry:;
if ( e == &user_entry ) {
entry_clean( &user_entry );
backsql_entry_clean( op, &user_entry );
}
next_entry2:;
@ -2245,10 +2245,10 @@ send_results:;
send_ldap_result( op, rs );
}
entry_clean( &base_entry );
backsql_entry_clean( op, &base_entry );
/* in case we got here accidentally */
entry_clean( &user_entry );
backsql_entry_clean( op, &user_entry );
if ( rs->sr_v2ref ) {
ber_bvarray_free( rs->sr_v2ref );
@ -2390,3 +2390,39 @@ return_results:;
return rc;
}
void
backsql_entry_clean(
Operation *op,
Entry *e )
{
void *ctx;
ctx = ldap_pvt_thread_pool_context();
if ( ctx == NULL || ctx == op->o_tmpmemctx ) {
if ( !BER_BVISNULL( &e->e_name ) ) {
op->o_tmpfree( e->e_name.bv_val, op->o_tmpmemctx );
BER_BVZERO( &e->e_name );
}
if ( !BER_BVISNULL( &e->e_nname ) ) {
op->o_tmpfree( e->e_nname.bv_val, op->o_tmpmemctx );
BER_BVZERO( &e->e_nname );
}
}
entry_clean( e );
}
int
backsql_entry_release(
Operation *op,
Entry *e,
int rw )
{
backsql_entry_clean( op, e );
ch_free( e );
return 0;
}