From 804a111fbd4f1e348009b115cb601dcfe2ba7ede Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 31 Aug 2002 10:49:03 +0000 Subject: [PATCH] add {create,modify}Timestamp to subschema subentry (SHOULD per RFC2251; use server startup time to be conservative) --- servers/slapd/schema.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/servers/slapd/schema.c b/servers/slapd/schema.c index 874ace374c..452a679ff2 100644 --- a/servers/slapd/schema.c +++ b/servers/slapd/schema.c @@ -15,6 +15,7 @@ #include "slap.h" #include "ldap_pvt.h" +#include "lutil.h" #if defined( SLAPD_SCHEMA_DN ) @@ -26,6 +27,10 @@ schema_info( Entry **entry, const char **text ) = slap_schema.si_ad_structuralObjectClass; AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; + AttributeDescription *ad_createTimestamp + = slap_schema.si_ad_createTimestamp; + AttributeDescription *ad_modifyTimestamp + = slap_schema.si_ad_modifyTimestamp; Entry *e; struct berval vals[5]; @@ -81,6 +86,33 @@ schema_info( Entry **entry, const char **text ) attr_merge_one( e, desc, vals ); } + { + struct tm *ltm; + char timebuf[ LDAP_LUTIL_GENTIME_BUFSIZE ]; + + /* + * According to RFC 2251: + + Servers SHOULD provide the attributes createTimestamp and + modifyTimestamp in subschema entries, in order to allow clients to + maintain their caches of schema information. + + * to be conservative, we declare schema created + * AND modified at server startup time ... + */ + + ldap_pvt_thread_mutex_lock( &gmtime_mutex ); + ltm = gmtime( &starttime ); + lutil_gentime( timebuf, sizeof(timebuf), ltm ); + ldap_pvt_thread_mutex_unlock( &gmtime_mutex ); + + vals[0].bv_val = timebuf; + vals[0].bv_len = strlen( timebuf ); + + attr_merge_one( e, ad_createTimestamp, vals ); + attr_merge_one( e, ad_modifyTimestamp, vals ); + } + if ( syn_schema_info( e ) || mr_schema_info( e ) || mru_schema_info( e ) -- 2.39.5