]> git.sur5r.net Git - openldap/commitdiff
Add AttributeDescription counter
authorHoward Chu <hyc@openldap.org>
Tue, 6 Sep 2011 00:43:15 +0000 (17:43 -0700)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 4 Nov 2011 23:03:30 +0000 (16:03 -0700)
servers/slapd/ad.c
servers/slapd/proto-slap.h
servers/slapd/schema_init.c
servers/slapd/schema_prep.c
servers/slapd/slap.h

index 6c4bc4929d3a587fc66d33b6720da29170f21c0c..2dc250017375c788f6bfb7ff64276efb4fd4f431 100644 (file)
@@ -74,6 +74,8 @@ static int option_count = 1;
 
 static int msad_range_hack = 0;
 
+static int ad_count;
+
 static Attr_option *ad_find_option_definition( const char *opt, int optlen );
 
 int ad_keystring(
@@ -382,6 +384,9 @@ done:;
                d2->ad_flags = desc.ad_flags;
                d2->ad_cname.bv_len = desc.ad_type->sat_cname.bv_len;
                d2->ad_tags.bv_len = desc.ad_tags.bv_len;
+               ldap_pvt_thread_mutex_lock( &ad_index_mutex );
+               d2->ad_index = ++ad_count;
+               ldap_pvt_thread_mutex_unlock( &ad_index_mutex );
 
                if (dlen == 0) {
                        d2->ad_cname.bv_val = d2->ad_type->sat_cname.bv_val;
@@ -770,6 +775,7 @@ int slap_bv2undef_ad(
 
                /* shouldn't we protect this for concurrency? */
                desc->ad_type = at;
+               desc->ad_index = 0;
                ldap_pvt_thread_mutex_lock( &ad_undef_mutex );
                desc->ad_next = desc->ad_type->sat_ad;
                desc->ad_type->sat_ad = desc;
index 4d0e1bb19a0f34abf6865f8e95039d6c08743d01..05b979a9d52a2bd20694fc9498604b3221768203 100644 (file)
@@ -2051,6 +2051,7 @@ LDAP_SLAPD_V (ldap_pvt_thread_mutex_t)    entry2str_mutex;
 #define gmtime_mutex ldap_int_gmtime_mutex
 #endif /* ! LDAP_DEVEL */
 
+LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) ad_index_mutex;
 LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) ad_undef_mutex;
 LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) oc_undef_mutex;
 
index 65a7e2e87807f63e8957b152a9fed6699a6d4b9e..14064af23028e5602d873a5293b0b819096da744 100644 (file)
@@ -164,6 +164,7 @@ unsigned int index_intlen = SLAP_INDEX_INTLEN_DEFAULT;
 unsigned int index_intlen_strlen = SLAP_INDEX_INTLEN_STRLEN(
        SLAP_INDEX_INTLEN_DEFAULT );
 
+ldap_pvt_thread_mutex_t        ad_index_mutex;
 ldap_pvt_thread_mutex_t        ad_undef_mutex;
 ldap_pvt_thread_mutex_t        oc_undef_mutex;
 
@@ -6849,6 +6850,7 @@ schema_destroy( void )
        syn_destroy();
 
        if( schema_init_done ) {
+               ldap_pvt_thread_mutex_destroy( &ad_index_mutex );
                ldap_pvt_thread_mutex_destroy( &ad_undef_mutex );
                ldap_pvt_thread_mutex_destroy( &oc_undef_mutex );
        }
index dc5627fae23ef6666aa1859685a47b2c9865df20..85cd15c14321326794ddfb6fafd0f1778a81d5bd 100644 (file)
@@ -1161,6 +1161,7 @@ slap_schema_load( void )
        slap_at_proxied.sat_syntax = slap_schema.si_syn_octetString;
        slap_schema.si_at_proxied = &slap_at_proxied;
 
+       ldap_pvt_thread_mutex_init( &ad_index_mutex );
        ldap_pvt_thread_mutex_init( &ad_undef_mutex );
        ldap_pvt_thread_mutex_init( &oc_undef_mutex );
 
index 49a89018743551cd7dc3116ace4ca1490b438d36..cceef33947bbfb0f8f7e2a1ec9833950694ebdf2 100644 (file)
@@ -850,6 +850,7 @@ struct AttributeDescription {
 #define SLAP_DESC_BINARY       0x01U
 #define SLAP_DESC_TAG_RANGE    0x80U
 #define SLAP_DESC_TEMPORARY    0x1000U
+       unsigned ad_index;
 };
 
 /* flags to slap_*2undef_ad to register undefined (0, the default)