fix context memory and more cleanup

This commit is contained in:
Pierangelo Masarati 2003-04-11 23:23:03 +00:00
parent 29c2594fe4
commit 805894be1d
7 changed files with 28 additions and 32 deletions

View file

@ -74,8 +74,8 @@ backsql_bind( Operation *op, SlapReply *rs )
return 1;
}
backsql_init_search( &bsi, bi, &op->o_req_ndn, LDAP_SCOPE_BASE,
-1, -1, -1, NULL, dbh, op->o_bd, op->o_conn, op, NULL );
backsql_init_search( &bsi, &op->o_req_ndn, LDAP_SCOPE_BASE,
-1, -1, -1, NULL, dbh, op, NULL );
e = backsql_id2entry( &bsi, &user_entry, &user_id );
if ( e == NULL ) {
Debug( LDAP_DEBUG_TRACE, "backsql_bind(): "

View file

@ -325,7 +325,8 @@ backsql_get_attr_vals( void *v_at, void *v_bsi )
bv.bv_len = strlen( row.cols[ i ] );
#endif
backsql_entry_addattr( bsi->e,
&row.col_names[ i ], &bv );
&row.col_names[ i ], &bv,
bsi->op->o_tmpmemctx );
#ifdef BACKSQL_TRACE
Debug( LDAP_DEBUG_TRACE, "prec=%d\n",
@ -356,7 +357,8 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid )
Debug( LDAP_DEBUG_TRACE, "==>backsql_id2entry()\n", 0, 0, 0 );
rc = dnPrettyNormal( NULL, &eid->dn, &e->e_name, &e->e_nname );
rc = dnPrettyNormal( NULL, &eid->dn, &e->e_name, &e->e_nname,
bsi->op->o_tmpmemctx );
if ( rc != LDAP_SUCCESS ) {
return NULL;
}
@ -409,7 +411,8 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid )
bsi, 0, AVL_INORDER );
}
if ( attr_mergeit_one( bsi->e, ad_oc, &bsi->oc->oc->soc_cname ) ) {
if ( attr_merge_normalize_one( bsi->e, ad_oc, &bsi->oc->oc->soc_cname,
bsi->op->o_tmpmemctx ) ) {
entry_free( e );
return NULL;
}
@ -436,7 +439,8 @@ backsql_id2entry( backsql_srch_info *bsi, Entry *e, backsql_entryID *eid )
if ( bsi->bsi_flags | BSQL_SF_ALL_OPER
|| an_find( bsi->attrs, &AllOper ) ) {
if ( attr_mergeit_one( bsi->e, ad_soc, &soc ) ) {
if ( attr_merge_normalize_one( bsi->e, ad_soc, &soc,
bsi->op->o_tmpmemctx ) ) {
entry_free( e );
return NULL;
}

View file

@ -679,13 +679,13 @@ backsql_modrdn( Operation *op, SlapReply *rs )
goto modrdn_return;
}
build_new_dn( &new_dn, new_pdn, &op->oq_modrdn.rs_newrdn );
if ( dnNormalize2( NULL, &new_dn, &new_ndn ) != LDAP_SUCCESS ) {
build_new_dn( &new_dn, new_pdn, &op->oq_modrdn.rs_newrdn );
rs->sr_err = dnNormalize2( NULL, &new_dn, &new_ndn, op->o_tmpmemctx );
if ( rs->sr_err != LDAP_SUCCESS ) {
Debug( LDAP_DEBUG_TRACE, "backsql_modrdn(): "
"new dn is invalid ('%s') - aborting\n",
new_dn.bv_val, 0, 0 );
rs->sr_err = LDAP_INVALID_DN_SYNTAX;
rs->sr_text = "new DN is invalid";
rs->sr_text = "unable to build new DN";
send_ldap_result( op, rs );
goto modrdn_return;
}

View file

@ -56,9 +56,8 @@ backsql_compare( Operation *op, SlapReply *rs )
anlist[0].an_name = op->oq_compare.rs_ava->aa_desc->ad_cname;
anlist[0].an_desc = op->oq_compare.rs_ava->aa_desc;
anlist[1].an_name.bv_val = NULL;
backsql_init_search( &bsi, bi, &op->o_req_ndn, LDAP_SCOPE_BASE,
-1, -1, -1, NULL, dbh, op->o_bd, op->o_conn, op,
anlist);
backsql_init_search( &bsi, &op->o_req_ndn, LDAP_SCOPE_BASE,
-1, -1, -1, NULL, dbh, op, anlist);
e = backsql_id2entry( &bsi, &user_entry, &user_id );
if ( e == NULL ) {
Debug( LDAP_DEBUG_TRACE, "backsql_compare(): "
@ -85,7 +84,9 @@ backsql_compare( Operation *op, SlapReply *rs )
if ( value_find_ex( op->oq_compare.rs_ava->aa_desc,
SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH |
SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH,
a->a_nvals, &op->oq_compare.rs_ava->aa_value ) == 0 )
a->a_nvals,
&op->oq_compare.rs_ava->aa_value,
op->o_tmpmemctx ) == 0 )
{
rs->sr_err = LDAP_COMPARE_TRUE;
break;

View file

@ -84,7 +84,6 @@ backsql_attrlist_add( backsql_srch_info *bsi, AttributeDescription *ad )
void
backsql_init_search(
backsql_srch_info *bsi,
backsql_info *bi,
struct berval *nbase,
int scope,
int slimit,
@ -92,8 +91,6 @@ backsql_init_search(
time_t stoptime,
Filter *filter,
SQLHDBC dbh,
BackendDB *be,
Connection *conn,
Operation *op,
AttributeName *attrs )
{
@ -105,8 +102,6 @@ backsql_init_search(
bsi->tlimit = tlimit;
bsi->filter = filter;
bsi->dbh = dbh;
bsi->be = be;
bsi->conn = conn;
bsi->op = op;
bsi->bsi_flags = 0;
@ -142,7 +137,6 @@ backsql_init_search(
bsi->id_list = NULL;
bsi->n_candidates = 0;
bsi->stoptime = stoptime;
bsi->bi = bi;
bsi->sel.bv_val = NULL;
bsi->sel.bv_len = 0;
bsi->sel_len = 0;
@ -635,7 +629,7 @@ impossible:
static int
backsql_srch_query( backsql_srch_info *bsi, struct berval *query )
{
backsql_info *bi = (backsql_info *)bsi->be->be_private;
backsql_info *bi = (backsql_info *)bsi->op->o_bd->be_private;
ber_len_t q_len = 0;
int rc;
@ -1122,12 +1116,11 @@ backsql_search( Operation *op, SlapReply *rs )
/* compute it anyway; root does not use it */
stoptime = op->o_time + op->oq_search.rs_tlimit;
backsql_init_search( &srch_info, bi, &op->o_req_dn,
backsql_init_search( &srch_info, &op->o_req_dn,
op->oq_search.rs_scope,
op->oq_search.rs_slimit, op->oq_search.rs_tlimit,
stoptime, op->oq_search.rs_filter,
dbh, op->o_bd, op->o_conn, op,
op->oq_search.rs_attrs );
dbh, op, op->oq_search.rs_attrs );
/*
* for each objectclass we try to construct query which gets IDs

View file

@ -234,7 +234,8 @@ int
backsql_entry_addattr(
Entry *e,
struct berval *at_name,
struct berval *at_val )
struct berval *at_val,
void *memctx )
{
AttributeDescription *ad;
int rc;
@ -255,7 +256,7 @@ backsql_entry_addattr(
return 0;
}
rc = attr_mergeit_one( e, ad, at_val );
rc = attr_merge_normalize_one( e, ad, at_val, memctx );
if ( rc != 0 ) {
Debug( LDAP_DEBUG_TRACE, "backsql_entry_addattr(): "

View file

@ -21,7 +21,7 @@ struct berval * backsql_strfcat( struct berval *dest, ber_len_t *buflen,
const char *fmt, ... );
int backsql_entry_addattr( Entry *e, struct berval *at_name,
struct berval *at_val );
struct berval *at_val, void *memctx );
typedef struct backsql_srch_info {
struct berval *base_dn;
@ -38,8 +38,6 @@ typedef struct backsql_srch_info {
ber_len_t sel_len, from_len, jwhere_len, fwhere_len;
SQLHDBC dbh;
int status;
Backend *be;
Connection *conn;
Operation *op;
AttributeName *attrs;
int bsi_flags;
@ -50,11 +48,10 @@ typedef struct backsql_srch_info {
int use_reverse_dn;
} backsql_srch_info;
void backsql_init_search( backsql_srch_info *bsi, backsql_info *bi,
void backsql_init_search( backsql_srch_info *bsi,
struct berval *nbase, int scope, int slimit, int tlimit,
time_t stoptime, Filter *filter, SQLHDBC dbh,
BackendDB *be, Connection *conn, Operation *op,
AttributeName *attrs );
Operation *op, AttributeName *attrs );
Entry *backsql_id2entry( backsql_srch_info *bsi, Entry *e,
backsql_entryID *id );