]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
fix ITS#5959 fix
[openldap] / servers / slapd / main.c
index ec33cf84da03ce08576269d5997c9b633110d2fa..fa008ee2cff64d22bd77aa1d9b08ab38746e3e14 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Copyright 1998-2009 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -305,7 +305,7 @@ usage( char *name )
                "\t-g group\tGroup (id or name) to run as\n"
 #endif
                "\t-h URLs\t\tList of URLs to serve\n"
-#ifdef LOG_LOCAL4
+#ifdef SLAP_DEFAULT_SYSLOG_USER
                "\t-l facility\tSyslog facility (default: LOCAL4)\n"
 #endif
                "\t-n serverName\tService name\n"
@@ -348,7 +348,7 @@ int main( int argc, char **argv )
 #if defined(HAVE_CHROOT)
        char *sandbox = NULL;
 #endif
-#ifdef LOG_LOCAL4
+#ifdef SLAP_DEFAULT_SYSLOG_USER
        int syslogUser = SLAP_DEFAULT_SYSLOG_USER;
 #endif
        
@@ -675,6 +675,7 @@ unhandled_option:;
                if ( version > 1 ) goto stop;
        }
 
+#if defined(LDAP_DEBUG) && defined(LDAP_SYSLOG)
        {
                char *logName;
 #ifdef HAVE_EBCDIC
@@ -693,6 +694,7 @@ unhandled_option:;
                free( logName );
 #endif
        }
+#endif /* LDAP_DEBUG && LDAP_SYSLOG */
 
        Debug( LDAP_DEBUG_ANY, "%s", Versionstr, 0, 0 );
 
@@ -734,6 +736,13 @@ unhandled_option:;
                SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
                goto destroy;
        }
+       /* Library defaults to full certificate checking. This is correct when
+        * a client is verifying a server because all servers should have a
+        * valid cert. But few clients have valid certs, so we want our default
+        * to be no checking. The config file can override this as usual.
+        */
+       rc = LDAP_OPT_X_TLS_NEVER;
+       (void) ldap_pvt_tls_set_option( slap_tls_ld, LDAP_OPT_X_TLS_REQUIRE_CERT, &rc );
 #endif
 
        rc = slap_init( serverMode, serverName );
@@ -783,7 +792,7 @@ unhandled_option:;
                }
        }
 
-       if ( glue_sub_attach( ) != 0 ) {
+       if ( glue_sub_attach( ) != 0 ) {
                Debug( LDAP_DEBUG_ANY,
                    "subordinate config error\n",
                    0, 0, 0 );
@@ -830,6 +839,12 @@ unhandled_option:;
        }
 #endif
 
+#ifdef HAVE_CYRUS_SASL
+       if( sasl_host == NULL ) {
+               sasl_host = ch_strdup( global_host );
+       }
+#endif
+
        (void) SIGNAL( LDAP_SIGUSR1, slap_sig_wake );
        (void) SIGNAL( LDAP_SIGUSR2, slap_sig_shutdown );
 
@@ -914,6 +929,8 @@ unhandled_option:;
         */
        time( &starttime );
 
+       connections_init();
+
        if ( slap_startup( NULL ) != 0 ) {
                rc = 1;
                SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 21 );
@@ -982,6 +999,8 @@ stop:
 
        controls_destroy();
 
+       filter_destroy();
+
        schema_destroy();
 
        lutil_passwd_destroy();
@@ -1011,6 +1030,8 @@ stop:
                ch_free( configdir );
        if ( urls )
                ch_free( urls );
+       if ( global_host )
+               ch_free( global_host );
 
        /* kludge, get symbols referenced */
        tavl_free( NULL, NULL );