+/* $OpenLDAP$ */
/*
* Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
#include <ac/time.h>
#include <ac/socket.h>
+#include "ldap_pvt.h"
#include "slap.h"
static int add_created_attrs(Operation *op, Entry *e);
ndn = ch_strdup( dn );
- if ( dn_normalize_case( ndn ) == NULL ) {
+ if ( dn_normalize( ndn ) == NULL ) {
Debug( LDAP_DEBUG_ANY, "do_add: invalid dn (%s)\n", dn, 0, 0 );
send_ldap_result( conn, op, LDAP_INVALID_DN_SYNTAX, NULL,
"invalid DN", NULL, NULL );
e->e_ndn = ndn;
e->e_private = NULL;
- dn = NULL;
-
Debug( LDAP_DEBUG_ARGS, " do_add: ndn (%s)\n", e->e_ndn, 0, 0 );
/* get the attrs */
return rc;
}
+ /* make sure this backend recongizes critical controls */
+ rc = backend_check_controls( be, conn, op ) ;
+
+ if( rc != LDAP_SUCCESS ) {
+ send_ldap_result( conn, op, rc,
+ NULL, NULL, NULL, NULL );
+ }
+
+ if ( global_readonly || be->be_readonly ) {
+ Debug( LDAP_DEBUG_ANY, "do_add: database is read-only\n",
+ 0, 0, 0 );
+ entry_free( e );
+ send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+ NULL, "database is read-only", NULL, NULL );
+ return LDAP_UNWILLING_TO_PERFORM;
+ }
+
/*
* do the add if 1 && (2 || 3)
* 1) there is an add function implemented in this backend;
bv.bv_len = strlen( bv.bv_val );
}
attr_merge( e, "creatorsname", bvals );
+ attr_merge( e, "modifiersname", bvals );
currenttime = slap_get_time();
ldap_pvt_thread_mutex_lock( &gmtime_mutex );
-#ifndef LDAP_LOCALTIME
ltm = gmtime( ¤ttime );
strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", ltm );
-#else
- ltm = localtime( ¤ttime );
- strftime( buf, sizeof(buf), "%y%m%d%H%M%SZ", ltm );
-#endif
ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
bv.bv_val = buf;
bv.bv_len = strlen( bv.bv_val );
attr_merge( e, "createtimestamp", bvals );
+ attr_merge( e, "modifytimestamp", bvals );
return LDAP_SUCCESS;
}