char ttlbuf[] = "31557600";
char tsbuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
struct berval bv;
-
- ldap_pvt_thread_mutex_lock( &di->di_mutex );
- rs->sr_err = ( di->di_max_dynamicObjects &&
- di->di_num_dynamicObjects >= di->di_max_dynamicObjects );
- ldap_pvt_thread_mutex_unlock( &di->di_mutex );
- if ( rs->sr_err ) {
- op->o_bd->bd_info = (BackendInfo *)on->on_info;
- send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
- "too many dynamicObjects in context" );
- return rs->sr_err;
+
+ if ( !be_isroot_dn( op->o_bd, &op->o_req_ndn ) ) {
+ ldap_pvt_thread_mutex_lock( &di->di_mutex );
+ rs->sr_err = ( di->di_max_dynamicObjects &&
+ di->di_num_dynamicObjects >= di->di_max_dynamicObjects );
+ ldap_pvt_thread_mutex_unlock( &di->di_mutex );
+ if ( rs->sr_err ) {
+ op->o_bd->bd_info = (BackendInfo *)on->on_info;
+ send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
+ "too many dynamicObjects in context" );
+ return rs->sr_err;
+ }
}
ttl = DDS_DEFAULT_TTL( di );
di->di_suffix = be->be_suffix;
di->di_nsuffix = be->be_nsuffix;
- /* force deletion of expired entries... */
- be->bd_info = (BackendInfo *)on->on_info;
- rc = dds_expire( thrctx, di );
- be->bd_info = (BackendInfo *)on;
- if ( rc != LDAP_SUCCESS ) {
- rc = 1;
- goto done;
- }
-
/* ... so that count, if required, is accurate */
if ( di->di_max_dynamicObjects > 0 ) {
+ /* force deletion of expired entries... */
+ be->bd_info = (BackendInfo *)on->on_info;
+ rc = dds_expire( thrctx, di );
+ be->bd_info = (BackendInfo *)on;
+ if ( rc != LDAP_SUCCESS ) {
+ rc = 1;
+ goto done;
+ }
+
rc = dds_count( thrctx, be );
if ( rc != LDAP_SUCCESS ) {
rc = 1;
char *desc;
AttributeDescription **ad;
} s_at[] = {
-#warning "FIXME: register OID!!!"
- { "entryExpireTimestamp", "( 1.3.6.1.4.1.4203.666.999999.0 "
+ { "entryExpireTimestamp", "( 1.3.6.1.4.1.4203.666.1.57 "
"NAME ( 'entryExpireTimestamp' ) "
- "DESC 'RFC2589 extension: expire time of a dynamic object, "
- "computed as modifyTimestamp + entryTtl' "
+ "DESC 'RFC2589 OpenLDAP extension: expire time of a dynamic object, "
+ "computed as now + entryTtl' "
"EQUALITY generalizedTimeMatch "
"ORDERING generalizedTimeOrderingMatch "
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "