mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
move compare and delete to struct berval DNs
This commit is contained in:
parent
9f8c9bf3a8
commit
24a4d888dc
@ -18,8 +18,8 @@ bdb_compare(
|
||||
BackendDB *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn,
|
||||
struct berval *dn,
|
||||
struct berval *ndn,
|
||||
AttributeAssertion *ava
|
||||
)
|
||||
{
|
||||
@ -32,7 +32,7 @@ bdb_compare(
|
||||
int manageDSAit = get_manageDSAit( op );
|
||||
|
||||
/* get entry */
|
||||
rc = bdb_dn2entry( be, NULL, ndn, &e, &matched, 0 );
|
||||
rc = bdb_dn2entry( be, NULL, ndn->bv_val, &e, &matched, 0 );
|
||||
|
||||
switch( rc ) {
|
||||
case DB_NOTFOUND:
|
||||
@ -52,14 +52,14 @@ bdb_compare(
|
||||
matched_dn = ch_strdup( matched->e_dn );
|
||||
refs = is_entry_referral( matched )
|
||||
? get_entry_referrals( be, conn, op, matched,
|
||||
dn, LDAP_SCOPE_DEFAULT )
|
||||
dn->bv_val, LDAP_SCOPE_DEFAULT )
|
||||
: NULL;
|
||||
bdb_entry_return( be, matched );
|
||||
matched = NULL;
|
||||
|
||||
} else {
|
||||
refs = referral_rewrite( default_referral,
|
||||
NULL, dn, LDAP_SCOPE_DEFAULT );
|
||||
NULL, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
}
|
||||
|
||||
send_ldap_result( conn, op, rc = LDAP_REFERRAL,
|
||||
@ -74,7 +74,7 @@ bdb_compare(
|
||||
if (!manageDSAit && is_entry_referral( e ) ) {
|
||||
/* entry is a referral, don't allow add */
|
||||
struct berval **refs = get_entry_referrals( be,
|
||||
conn, op, e, dn, LDAP_SCOPE_DEFAULT );
|
||||
conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
|
||||
0, 0 );
|
||||
|
@ -18,8 +18,8 @@ bdb_delete(
|
||||
BackendDB *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn
|
||||
struct berval *dn,
|
||||
struct berval *ndn
|
||||
)
|
||||
{
|
||||
struct bdb_info *bdb = (struct bdb_info *) be->be_private;
|
||||
@ -33,11 +33,13 @@ bdb_delete(
|
||||
DB_TXN *ltid = NULL;
|
||||
struct bdb_op_info opinfo;
|
||||
|
||||
Debug( LDAP_DEBUG_ARGS, "==> bdb_delete: %s\n", dn, 0, 0 );
|
||||
Debug( LDAP_DEBUG_ARGS, "==> bdb_delete: %s\n",
|
||||
dn->bv_val, 0, 0 );
|
||||
|
||||
if( 0 ) {
|
||||
retry: /* transaction retry */
|
||||
Debug( LDAP_DEBUG_TRACE, "==> bdb_delete: retrying...\n", 0, 0, 0 );
|
||||
Debug( LDAP_DEBUG_TRACE, "==> bdb_delete: retrying...\n",
|
||||
0, 0, 0 );
|
||||
rc = txn_abort( ltid );
|
||||
ltid = NULL;
|
||||
op->o_private = NULL;
|
||||
@ -69,7 +71,7 @@ retry: /* transaction retry */
|
||||
op->o_private = &opinfo;
|
||||
|
||||
/* get entry for read/modify/write */
|
||||
rc = bdb_dn2entry( be, ltid, ndn, &e, &matched, DB_RMW );
|
||||
rc = bdb_dn2entry( be, ltid, ndn->bv_val, &e, &matched, DB_RMW );
|
||||
|
||||
switch( rc ) {
|
||||
case 0:
|
||||
@ -96,14 +98,14 @@ retry: /* transaction retry */
|
||||
matched_dn = ch_strdup( matched->e_dn );
|
||||
refs = is_entry_referral( matched )
|
||||
? get_entry_referrals( be, conn, op, matched,
|
||||
dn, LDAP_SCOPE_DEFAULT )
|
||||
dn->bv_val, LDAP_SCOPE_DEFAULT )
|
||||
: NULL;
|
||||
bdb_entry_return( be, matched );
|
||||
matched = NULL;
|
||||
|
||||
} else {
|
||||
refs = referral_rewrite( default_referral,
|
||||
NULL, dn, LDAP_SCOPE_DEFAULT );
|
||||
NULL, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
}
|
||||
|
||||
send_ldap_result( conn, op, LDAP_REFERRAL,
|
||||
@ -116,7 +118,7 @@ retry: /* transaction retry */
|
||||
goto done;
|
||||
}
|
||||
|
||||
pdn = dn_parent( be, ndn );
|
||||
pdn = dn_parent( be, ndn->bv_val );
|
||||
|
||||
if( pdn != NULL && *pdn != '\0' ) {
|
||||
/* get parent */
|
||||
@ -192,7 +194,7 @@ retry: /* transaction retry */
|
||||
/* parent is a referral, don't allow add */
|
||||
/* parent is an alias, don't allow add */
|
||||
struct berval **refs = get_entry_referrals( be,
|
||||
conn, op, e, dn, LDAP_SCOPE_DEFAULT );
|
||||
conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"bdb_delete: entry is referral\n",
|
||||
|
@ -21,8 +21,8 @@ ldbm_back_compare(
|
||||
Backend *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn,
|
||||
struct berval *dn,
|
||||
struct berval *ndn,
|
||||
AttributeAssertion *ava
|
||||
)
|
||||
{
|
||||
@ -34,7 +34,7 @@ ldbm_back_compare(
|
||||
int manageDSAit = get_manageDSAit( op );
|
||||
|
||||
/* get entry with reader lock */
|
||||
if ( (e = dn2entry_r( be, ndn, &matched )) == NULL ) {
|
||||
if ( (e = dn2entry_r( be, ndn->bv_val, &matched )) == NULL ) {
|
||||
char *matched_dn = NULL;
|
||||
struct berval **refs = NULL;
|
||||
|
||||
@ -42,12 +42,12 @@ ldbm_back_compare(
|
||||
matched_dn = ch_strdup( matched->e_dn );
|
||||
refs = is_entry_referral( matched )
|
||||
? get_entry_referrals( be, conn, op, matched,
|
||||
dn, LDAP_SCOPE_DEFAULT )
|
||||
dn->bv_val, LDAP_SCOPE_DEFAULT )
|
||||
: NULL;
|
||||
cache_return_entry_r( &li->li_cache, matched );
|
||||
} else {
|
||||
refs = referral_rewrite( default_referral,
|
||||
NULL, dn, LDAP_SCOPE_DEFAULT );
|
||||
NULL, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
}
|
||||
|
||||
send_ldap_result( conn, op, LDAP_REFERRAL,
|
||||
@ -62,7 +62,7 @@ ldbm_back_compare(
|
||||
if (!manageDSAit && is_entry_referral( e ) ) {
|
||||
/* entry is a referral, don't allow add */
|
||||
struct berval **refs = get_entry_referrals( be,
|
||||
conn, op, e, dn, LDAP_SCOPE_DEFAULT );
|
||||
conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
|
||||
|
@ -21,8 +21,8 @@ ldbm_back_delete(
|
||||
Backend *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn
|
||||
struct berval *dn,
|
||||
struct berval *ndn
|
||||
)
|
||||
{
|
||||
struct ldbminfo *li = (struct ldbminfo *) be->be_private;
|
||||
@ -36,35 +36,35 @@ ldbm_back_delete(
|
||||
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
|
||||
"ldbm_back_delete: %s\n", dn ));
|
||||
"ldbm_back_delete: %s\n", dn->bv_val ));
|
||||
#else
|
||||
Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_delete: %s\n", dn, 0, 0);
|
||||
Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_delete: %s\n", dn->bv_val, 0, 0);
|
||||
#endif
|
||||
|
||||
/* get entry with writer lock */
|
||||
if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) {
|
||||
if ( (e = dn2entry_w( be, ndn->bv_val, &matched )) == NULL ) {
|
||||
char *matched_dn = NULL;
|
||||
struct berval **refs;
|
||||
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
|
||||
"ldbm_back_delete: no such object %s\n", dn ));
|
||||
"ldbm_back_delete: no such object %s\n", dn->bv_val ));
|
||||
#else
|
||||
Debug(LDAP_DEBUG_ARGS, "<=- ldbm_back_delete: no such object %s\n",
|
||||
dn, 0, 0);
|
||||
dn->bv_val, 0, 0);
|
||||
#endif
|
||||
|
||||
if ( matched != NULL ) {
|
||||
matched_dn = ch_strdup( matched->e_dn );
|
||||
refs = is_entry_referral( matched )
|
||||
? get_entry_referrals( be, conn, op, matched,
|
||||
dn, LDAP_SCOPE_DEFAULT )
|
||||
dn->bv_val, LDAP_SCOPE_DEFAULT )
|
||||
: NULL;
|
||||
cache_return_entry_r( &li->li_cache, matched );
|
||||
|
||||
} else {
|
||||
refs = referral_rewrite( default_referral,
|
||||
NULL, dn, LDAP_SCOPE_DEFAULT );
|
||||
NULL, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
}
|
||||
|
||||
send_ldap_result( conn, op, LDAP_REFERRAL,
|
||||
@ -80,7 +80,7 @@ ldbm_back_delete(
|
||||
/* parent is a referral, don't allow add */
|
||||
/* parent is an alias, don't allow add */
|
||||
struct berval **refs = get_entry_referrals( be,
|
||||
conn, op, e, dn, LDAP_SCOPE_DEFAULT );
|
||||
conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
|
||||
@ -139,7 +139,8 @@ ldbm_back_delete(
|
||||
{
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
|
||||
"ldbm_back_delete: no access to parent of (%s)\n", dn ));
|
||||
"ldbm_back_delete: no access to parent of (%s)\n",
|
||||
dn->bv_val ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"<=- ldbm_back_delete: no access to parent\n", 0,
|
||||
@ -205,11 +206,12 @@ ldbm_back_delete(
|
||||
if ( dn2id_delete( be, e->e_ndn, e->e_id ) != 0 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
|
||||
"ldbm_back_delete: (%s) operations error\n", dn ));
|
||||
"ldbm_back_delete: (%s) operations error\n",
|
||||
dn->bv_val ));
|
||||
#else
|
||||
Debug(LDAP_DEBUG_ARGS,
|
||||
"<=- ldbm_back_delete: operations error %s\n",
|
||||
dn, 0, 0);
|
||||
dn->bv_val, 0, 0);
|
||||
#endif
|
||||
|
||||
send_ldap_result( conn, op, LDAP_OTHER,
|
||||
@ -222,11 +224,11 @@ ldbm_back_delete(
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
|
||||
"ldbm_back_delete: (%s) operations error\n",
|
||||
dn ));
|
||||
dn->bv_val ));
|
||||
#else
|
||||
Debug(LDAP_DEBUG_ARGS,
|
||||
"<=- ldbm_back_delete: operations error %s\n",
|
||||
dn, 0, 0);
|
||||
dn->bv_val, 0, 0);
|
||||
#endif
|
||||
|
||||
send_ldap_result( conn, op, LDAP_OTHER,
|
||||
|
@ -46,8 +46,8 @@ monitor_back_compare(
|
||||
Backend *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn,
|
||||
struct berval *dn,
|
||||
struct berval *ndn,
|
||||
AttributeAssertion *ava
|
||||
)
|
||||
{
|
||||
@ -56,7 +56,7 @@ monitor_back_compare(
|
||||
Attribute *a;
|
||||
|
||||
/* get entry with reader lock */
|
||||
monitor_cache_dn2entry( mi, ndn, &e, &matched );
|
||||
monitor_cache_dn2entry( mi, ndn->bv_val, &e, &matched );
|
||||
if ( e == NULL ) {
|
||||
send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT,
|
||||
matched ? matched->e_dn : NULL,
|
||||
@ -85,7 +85,6 @@ monitor_back_compare(
|
||||
rc = LDAP_COMPARE_FALSE;
|
||||
|
||||
if ( value_find( ava->aa_desc, a->a_vals, ava->aa_value ) == 0 ) {
|
||||
|
||||
rc = LDAP_COMPARE_TRUE;
|
||||
break;
|
||||
}
|
||||
|
@ -397,15 +397,15 @@ glue_back_compare (
|
||||
BackendDB *b0,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn,
|
||||
struct berval *dn,
|
||||
struct berval *ndn,
|
||||
AttributeAssertion *ava
|
||||
)
|
||||
{
|
||||
BackendDB *be;
|
||||
int rc;
|
||||
|
||||
be = glue_back_select (b0, ndn);
|
||||
be = glue_back_select (b0, ndn->bv_val);
|
||||
|
||||
if (be && be->be_compare) {
|
||||
rc = be->be_compare (be, conn, op, dn, ndn, ava);
|
||||
@ -497,14 +497,14 @@ glue_back_delete (
|
||||
BackendDB *b0,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
const char *dn,
|
||||
const char *ndn
|
||||
struct berval *dn,
|
||||
struct berval *ndn
|
||||
)
|
||||
{
|
||||
BackendDB *be;
|
||||
int rc;
|
||||
|
||||
be = glue_back_select (b0, ndn);
|
||||
be = glue_back_select (b0, ndn->bv_val);
|
||||
|
||||
if (be && be->be_delete) {
|
||||
rc = be->be_delete (be, conn, op, dn, ndn);
|
||||
|
@ -284,7 +284,7 @@ do_compare(
|
||||
suffix_alias( be, ndn );
|
||||
|
||||
if ( be->be_compare ) {
|
||||
(*be->be_compare)( be, conn, op, pdn->bv_val, ndn->bv_val, &ava );
|
||||
(*be->be_compare)( be, conn, op, pdn, ndn, &ava );
|
||||
} else {
|
||||
send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM,
|
||||
NULL, "operation not supported within namingContext",
|
||||
|
@ -184,7 +184,7 @@ do_delete(
|
||||
if ( !be->be_update_ndn.bv_len || repl_user )
|
||||
#endif
|
||||
{
|
||||
if ( (*be->be_delete)( be, conn, op, pdn->bv_val, ndn->bv_val ) == 0 ) {
|
||||
if ( (*be->be_delete)( be, conn, op, pdn, ndn ) == 0 ) {
|
||||
#ifdef SLAPD_MULTIMASTER
|
||||
if ( !be->be_update_ndn.bv_len || !repl_user )
|
||||
#endif
|
||||
|
@ -1048,7 +1048,7 @@ typedef int (BI_op_search) LDAP_P((BackendDB *bd,
|
||||
struct berval **attrs, int attrsonly));
|
||||
typedef int (BI_op_compare)LDAP_P((BackendDB *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
const char *dn, const char *ndn,
|
||||
struct berval *dn, struct berval *ndn,
|
||||
AttributeAssertion *ava));
|
||||
typedef int (BI_op_modify) LDAP_P((BackendDB *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
@ -1063,7 +1063,7 @@ typedef int (BI_op_add) LDAP_P((BackendDB *bd,
|
||||
Entry *e));
|
||||
typedef int (BI_op_delete) LDAP_P((BackendDB *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
const char *dn, const char *ndn));
|
||||
struct berval *dn, struct berval *ndn));
|
||||
typedef int (BI_op_abandon) LDAP_P((BackendDB *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
ber_int_t msgid));
|
||||
@ -1094,6 +1094,7 @@ typedef int (BI_acl_group) LDAP_P((Backend *bd,
|
||||
Entry *e, const char *bdn, const char *edn,
|
||||
ObjectClass *group_oc,
|
||||
AttributeDescription *group_at ));
|
||||
|
||||
typedef int (BI_acl_attribute) LDAP_P((Backend *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
Entry *e, const char *edn,
|
||||
|
Loading…
Reference in New Issue
Block a user