/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2003-2008 The OpenLDAP Foundation.
+ * Copyright 2003-2013 The OpenLDAP Foundation.
* Portions Copyright 1999-2003 Howard Chu.
* Portions Copyright 2000-2003 Pierangelo Masarati.
* All rights reserved.
static const ldap_extra_t ldap_extra = {
ldap_back_proxy_authz_ctrl,
ldap_back_controls_free,
- slap_idassert_authzfrom_parse_cf,
- slap_idassert_parse_cf,
+ slap_idassert_authzfrom_parse,
+ slap_idassert_passthru_parse_cf,
+ slap_idassert_parse,
slap_retry_info_destroy,
slap_retry_info_parse,
- slap_retry_info_unparse
+ slap_retry_info_unparse,
+ ldap_back_connid2str
};
int
* and the entryTtl attribute */
SLAP_BFLAG_DYNAMIC |
#endif /* LDAP_DYNAMIC_OBJECTS */
- 0;
+
+ /* back-ldap recognizes RFC4525 increment;
+ * let the remote server complain, if needed (ITS#5912) */
+ SLAP_BFLAG_INCREMENT;
bi->bi_open = ldap_back_open;
bi->bi_config = 0;
bi->bi_extra = (void *)&ldap_extra;
+ rc = ldap_back_init_cf( bi );
+ if ( rc ) {
+ return rc;
+ }
+
rc = chain_initialize();
if ( rc ) {
return rc;
}
+ rc = pbind_initialize();
+ if ( rc ) {
+ return rc;
+ }
+
#ifdef SLAP_DISTPROC
rc = distproc_initialize();
if ( rc ) {
return rc;
}
#endif
-
- return ldap_back_init_cf( bi );
+ return rc;
}
int
}
li->li_conn_priv_max = LDAP_BACK_CONN_PRIV_DEFAULT;
+ ldap_pvt_thread_mutex_init( &li->li_counter_mutex );
+ for ( i = 0; i < SLAP_OP_LAST; i++ ) {
+ ldap_pvt_mp_init( li->li_ops_completed[ i ] );
+ }
+
be->be_private = li;
SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_NOLASTMOD;
ber_bvarray_free( li->li_bvuri );
li->li_bvuri = NULL;
}
- if ( !BER_BVISNULL( &li->li_acl_authcID ) ) {
- ch_free( li->li_acl_authcID.bv_val );
- BER_BVZERO( &li->li_acl_authcID );
- }
- if ( !BER_BVISNULL( &li->li_acl_authcDN ) ) {
- ch_free( li->li_acl_authcDN.bv_val );
- BER_BVZERO( &li->li_acl_authcDN );
- }
- if ( !BER_BVISNULL( &li->li_acl_passwd ) ) {
- ch_free( li->li_acl_passwd.bv_val );
- BER_BVZERO( &li->li_acl_passwd );
- }
- if ( !BER_BVISNULL( &li->li_acl_sasl_mech ) ) {
- ch_free( li->li_acl_sasl_mech.bv_val );
- BER_BVZERO( &li->li_acl_sasl_mech );
- }
- if ( !BER_BVISNULL( &li->li_acl_sasl_realm ) ) {
- ch_free( li->li_acl_sasl_realm.bv_val );
- BER_BVZERO( &li->li_acl_sasl_realm );
- }
- if ( !BER_BVISNULL( &li->li_idassert_authcID ) ) {
- ch_free( li->li_idassert_authcID.bv_val );
- BER_BVZERO( &li->li_idassert_authcID );
- }
- if ( !BER_BVISNULL( &li->li_idassert_authcDN ) ) {
- ch_free( li->li_idassert_authcDN.bv_val );
- BER_BVZERO( &li->li_idassert_authcDN );
- }
- if ( !BER_BVISNULL( &li->li_idassert_passwd ) ) {
- ch_free( li->li_idassert_passwd.bv_val );
- BER_BVZERO( &li->li_idassert_passwd );
- }
- if ( !BER_BVISNULL( &li->li_idassert_authzID ) ) {
- ch_free( li->li_idassert_authzID.bv_val );
- BER_BVZERO( &li->li_idassert_authzID );
- }
- if ( !BER_BVISNULL( &li->li_idassert_sasl_mech ) ) {
- ch_free( li->li_idassert_sasl_mech.bv_val );
- BER_BVZERO( &li->li_idassert_sasl_mech );
- }
- if ( !BER_BVISNULL( &li->li_idassert_sasl_realm ) ) {
- ch_free( li->li_idassert_sasl_realm.bv_val );
- BER_BVZERO( &li->li_idassert_sasl_realm );
- }
+
+ bindconf_free( &li->li_tls );
+ bindconf_free( &li->li_acl );
+ bindconf_free( &li->li_idassert.si_bc );
+
if ( li->li_idassert_authz != NULL ) {
ber_bvarray_free( li->li_idassert_authz );
li->li_idassert_authz = NULL;
ldap_pvt_thread_mutex_unlock( &li->li_conninfo.lai_mutex );
ldap_pvt_thread_mutex_destroy( &li->li_conninfo.lai_mutex );
ldap_pvt_thread_mutex_destroy( &li->li_uri_mutex );
+
+ for ( i = 0; i < SLAP_OP_LAST; i++ ) {
+ ldap_pvt_mp_clear( li->li_ops_completed[ i ] );
+ }
+ ldap_pvt_thread_mutex_destroy( &li->li_counter_mutex );
}
ch_free( be->be_private );