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 );
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;
retry: /* transaction retry */
if ( e != NULL ) {
bdb_cache_delete_entry(&bdb->bi_cache, e);
- bdb_cache_return_entry_w(bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
+ bdb_unlocked_cache_return_entry_w(&bdb->bi_cache, e);
}
#ifdef NEW_LOGGING
LDAP_LOG ( ACL, DETAIL1, "bdb_exop_passwd: retrying...\n", 0, 0, 0 );
done:
if( e != NULL ) {
- bdb_cache_return_entry_w( bdb->bi_dbenv, &bdb->bi_cache, e, &lock );
+ bdb_unlocked_cache_return_entry_w( &bdb->bi_cache, e );
}
if( hash.bv_val != NULL ) {
* 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(
bdb_abandon(
BackendDB *be,
Connection *conn,
+ Operation *op,
ber_int_t id )
{
Operation *ps_list;
bdb_cancel(
BackendDB *be,
Connection *conn,
+ Operation *op,
ber_int_t id )
{
Operation *ps_list;
}
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 );
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_cancel ) 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";
}
}
#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;
}
--- /dev/null
+# $OpenLDAP$
+#
+# Assorted definitions from several sources, including
+# ''works in progress''. Contents of this file are
+# subject to change (including deletion) without notice.
+#
+# Not recommended for production use!
+# Use with extreme caution!
+
+#
+# draft-lachman-laser-ldap-mail-routing-02.txt !!!EXPIRED!!!
+#
+attributetype ( 2.16.840.1.113730.3.1.13
+ NAME 'mailLocalAddress'
+ DESC 'RFC822 email address of this recipient'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( 2.16.840.1.113730.3.1.18
+ NAME 'mailHost'
+ DESC 'FQDN of the SMTP/MTA of this recipient'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
+ SINGLE-VALUE )
+
+attributetype ( 2.16.840.1.113730.3.1.47
+ NAME 'mailRoutingAddress'
+ DESC 'RFC822 routing address of this recipient'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
+ SINGLE-VALUE )
+
+# I-D leaves this OID TBD.
+# iPlanet uses 2.16.840.1.113.730.3.2.147 but that is an
+# improperly delegated OID. A typo is likely.
+objectclass ( 2.16.840.1.113730.3.2.147
+ NAME 'inetLocalMailRecipient'
+ DESC 'Internet local mail recipient'
+ SUP top AUXILIARY
+ MAY ( mailLocalAddress $ mailHost $ mailRoutingAddress ) )
+
+#
+# draft-srivastava-ldap-mail-00.txt !!!EXPIRED!!!
+#
+attributetype ( 1.3.6.1.4.1.42.2.27.2.1.15
+ NAME 'rfc822MailMember'
+ DESC 'rfc822 mail address of group member(s)'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+#
+# !!!no I-D!!!
+#
+objectclass ( 1.3.6.1.4.1.42.2.27.1.2.5
+ NAME 'nisMailAlias'
+ DESC 'NIS mail alias'
+ SUP top STRUCTURAL
+ MUST cn
+ MAY rfc822MailMember )
#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
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,
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;