mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-31 12:09:35 -05:00
Use function pointers to get at backend routines.
This commit is contained in:
parent
8dac33b6c3
commit
1a14def903
6 changed files with 35 additions and 14 deletions
|
|
@ -109,14 +109,11 @@ do_abandon(
|
|||
|
||||
done:
|
||||
|
||||
#ifdef LDAP_CLIENT_UPDATE
|
||||
for ( i = 0; i < nbackends; i++ ) {
|
||||
if ( strncmp( backends[i].be_type, "bdb", 3 ) ) continue;
|
||||
if ( bdb_abandon( &backends[i], conn, id ) == LDAP_SUCCESS ) {
|
||||
break;
|
||||
}
|
||||
Backend *be = &backends[i];
|
||||
|
||||
if( be->be_abandon ) be->be_abandon( be, conn, op, id );
|
||||
}
|
||||
#endif
|
||||
|
||||
ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
|
||||
|
||||
|
|
|
|||
|
|
@ -635,7 +635,14 @@ bdb_initialize(
|
|||
bi->bi_op_search = bdb_search;
|
||||
|
||||
bi->bi_op_unbind = 0;
|
||||
|
||||
#ifdef LDAP_CLIENT_UPDATE
|
||||
bi->bi_op_abandon = bdb_abandon;
|
||||
bi->bi_op_cancel = bdb_cancel;
|
||||
#else
|
||||
bi->bi_op_abandon = 0;
|
||||
bi->bi_op_cancel = 0;
|
||||
#endif
|
||||
|
||||
bi->bi_extended = bdb_extended;
|
||||
|
||||
|
|
|
|||
|
|
@ -368,13 +368,19 @@ void bdb_cache_release_all( Cache *cache );
|
|||
* lcup.c
|
||||
*/
|
||||
|
||||
#ifdef LDAP_CLIENT_UPDATE
|
||||
int bdb_abandon(
|
||||
BackendDB *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
ber_int_t id
|
||||
);
|
||||
|
||||
int bdb_cancel(
|
||||
BackendDB *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
ber_int_t id
|
||||
);
|
||||
#endif
|
||||
|
||||
#if defined(LDAP_CLIENT_UPDATE) || defined(LDAP_SYNC)
|
||||
int bdb_add_psearch_spec(
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ int
|
|||
bdb_abandon(
|
||||
BackendDB *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
ber_int_t id )
|
||||
{
|
||||
Operation *ps_list;
|
||||
|
|
@ -59,6 +60,7 @@ int
|
|||
bdb_cancel(
|
||||
BackendDB *be,
|
||||
Connection *conn,
|
||||
Operation *op,
|
||||
ber_int_t id )
|
||||
{
|
||||
Operation *ps_list;
|
||||
|
|
|
|||
|
|
@ -76,8 +76,7 @@ int cancel_extop(
|
|||
}
|
||||
ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
|
||||
|
||||
if ( found )
|
||||
return LDAP_SUCCESS;
|
||||
if ( found ) return LDAP_SUCCESS;
|
||||
|
||||
found = 0;
|
||||
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
|
||||
|
|
@ -91,9 +90,13 @@ int cancel_extop(
|
|||
if ( !found ) {
|
||||
#ifdef LDAP_SYNC
|
||||
for ( i = 0; i < nbackends; i++ ) {
|
||||
if ( strncmp( backends[i].be_type, "bdb", 3 ) ) continue;
|
||||
Backend *be = &backends[i];
|
||||
if( !be->be_abandon ) continue;
|
||||
|
||||
|
||||
ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
|
||||
if ( bdb_cancel( &backends[i], conn, opid ) == LDAP_SUCCESS ) {
|
||||
|
||||
if ( be->be_cancel( be, conn, op, opid ) == LDAP_SUCCESS ) {
|
||||
return LDAP_SUCCESS;
|
||||
} else {
|
||||
*text = "message ID not found";
|
||||
|
|
@ -101,15 +104,15 @@ int cancel_extop(
|
|||
}
|
||||
}
|
||||
#else
|
||||
*text = "message ID not found";
|
||||
ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
|
||||
*text = "message ID not found";
|
||||
return LDAP_NO_SUCH_OPERATION;
|
||||
#endif
|
||||
}
|
||||
|
||||
if ( op->o_cancel != SLAP_CANCEL_NONE ) {
|
||||
*text = "message ID already being cancelled";
|
||||
ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
|
||||
*text = "message ID already being cancelled";
|
||||
return LDAP_PROTOCOL_ERROR;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1226,6 +1226,8 @@ struct slap_backend_db {
|
|||
#define be_modify bd_info->bi_op_modify
|
||||
#define be_modrdn bd_info->bi_op_modrdn
|
||||
#define be_search bd_info->bi_op_search
|
||||
#define be_abandon bd_info->bi_op_abandon
|
||||
#define be_cancel bd_info->bi_op_cancel
|
||||
|
||||
#define be_extended bd_info->bi_extended
|
||||
|
||||
|
|
@ -1402,6 +1404,9 @@ typedef int (BI_op_delete) LDAP_P((BackendDB *bd,
|
|||
typedef int (BI_op_abandon) LDAP_P((BackendDB *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
ber_int_t msgid));
|
||||
typedef int (BI_op_cancel) LDAP_P((BackendDB *bd,
|
||||
struct slap_conn *c, struct slap_op *o,
|
||||
ber_int_t msgid));
|
||||
|
||||
typedef int (BI_op_extended) LDAP_P((
|
||||
BackendDB *be,
|
||||
|
|
@ -1527,6 +1532,7 @@ struct slap_backend_info {
|
|||
BI_op_add *bi_op_add;
|
||||
BI_op_delete *bi_op_delete;
|
||||
BI_op_abandon *bi_op_abandon;
|
||||
BI_op_cancel *bi_op_cancel;
|
||||
|
||||
/* Extended Operations Helper */
|
||||
BI_op_extended *bi_extended;
|
||||
|
|
|
|||
Loading…
Reference in a new issue