#include <ac/wait.h>
#include <ac/errno.h>
+#include "ldap_pvt.h"
+
#include "slap.h"
#include "lutil.h"
+#include "ldif.h"
#ifdef LDAP_SIGCHLD
static RETSIGTYPE wait4child( int sig );
/* in nt_main.c */
LDAP_LUTIL_V(SERVICE_STATUS) SLAPDServiceStatus;
LDAP_LUTIL_V(SERVICE_STATUS_HANDLE) hSLAPDServiceStatus;
-extern ldap_pvt_thread_cond_t started_event, stopped_event;
+/* externs are frowned upon, but so is NT :-) */
+extern ldap_pvt_thread_cond_t started_event, stopped_event;
extern int is_NT_Service;
void CommenceStartupProcessing( LPCTSTR serverName,
#endif
{
int i, no_detach = 0;
- int rc;
+ int rc = 1;
char *urls = NULL;
#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
char *username = NULL;
#ifdef HAVE_TLS
rc = ldap_pvt_tls_init();
+ if( rc != 0) {
+#ifdef NEW_LOGGING
+ LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+ "main: tls init failed: %d\n", rc ));
+#else
+ Debug( LDAP_DEBUG_ANY,
+ "main: TLS init failed: %d\n",
+ 0, 0, 0 );
+#endif
+ rc = 1;
+ SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
+ goto destroy;
+ }
- if (rc || ldap_pvt_tls_init_def_ctx() != 0) {
+ rc = ldap_pvt_tls_init_def_ctx();
+ if( rc != 0) {
+#ifdef NEW_LOGGING
+ LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+ "main: tls init def ctx failed: %d\n", rc ));
+#else
+ Debug( LDAP_DEBUG_ANY,
+ "main: TLS init def ctx failed: %d\n",
+ 0, 0, 0 );
+#endif
rc = 1;
SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
goto destroy;
#endif
slapd_daemon_destroy();
+ schema_destroy();
+
+#ifdef HAVE_TLS
+ ldap_pvt_tls_destroy();
+#endif
+
#ifdef CSRIMALLOC
mal_dumpleaktrace( leakfile );
#endif