fprintf( stderr,
"\t-4\t\tIPv4 only\n"
"\t-6\t\tIPv6 only\n"
+ "\t-c cookie\tSync cookie of consumer\n"
"\t-d level\tDebug level" "\n"
"\t-f filename\tConfiguration file\n"
#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
char *serverName = NULL;
int serverMode = SLAP_SERVER_MODE;
+ struct berval cookie = { 0, NULL };
+
#ifdef CSRIMALLOC
FILE *leakfile;
if( ( leakfile = fopen( "slapd.leak", "w" )) == NULL ) {
}
#endif
+ sl_mem_init();
+
#ifdef HAVE_NT_SERVICE_MANAGER
{
int *i;
#endif
while ( (i = getopt( argc, argv,
- "d:f:h:s:n:t"
+ "c:d:f:h:s:n:t"
#if LDAP_PF_INET6
"46"
#endif
urls = ch_strdup( optarg );
break;
+ case 'c': /* provide sync cookie, override if exist in replica */
+ if ( slap_sync_cookie ) {
+ slap_sync_cookie_free( slap_sync_cookie, 1 );
+ }
+ slap_sync_cookie = (struct sync_cookie *) ch_calloc( 1,
+ sizeof( struct sync_cookie ));
+ ber_str2bv( optarg, strlen( optarg ), 1, &cookie );
+ ber_bvarray_add( &slap_sync_cookie->octet_str, &cookie );
+ break;
+
case 'd': /* set debug level and 'do not detach' flag */
no_detach = 1;
#ifdef LDAP_DEBUG
}
#endif
- if ( slap_init( serverMode, serverName ) != 0 ) {
- rc = 1;
- SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 18 );
- goto destroy;
- }
-
if ( slap_schema_init( ) != 0 ) {
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, CRIT, "main: schema initialization error\n", 0, 0, 0 );
goto destroy;
}
+ if ( slap_init( serverMode, serverName ) != 0 ) {
+ rc = 1;
+ SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 18 );
+ goto destroy;
+ }
+
if ( slap_controls_init( ) != 0 ) {
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, CRIT, "main: controls initialization error\n", 0, 0, 0 );
mal_leaktrace(1);
#endif
+ /*
+ * FIXME: moved here from slapd_daemon_task()
+ * because back-monitor db_open() needs it
+ */
+ time( &starttime );
+
if ( slap_startup( NULL ) != 0 ) {
rc = 1;
SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 21 );