Merge branch 'master' of git://git.samba.org/samba
[kai/samba.git] / source4 / smbd / server.c
index 8aad26dd2c51c53d58b2442c8eaeb6e25255b238..99e9c68a87de4b8b9d7c51bcf29b3d9550cb6811 100644 (file)
@@ -31,6 +31,7 @@
 #include "ntvfs/ntvfs.h"
 #include "ntptr/ntptr.h"
 #include "auth/gensec/gensec.h"
+#include "auth/gensec/schannel_state.h"
 #include "smbd/process_model.h"
 #include "param/secrets.h"
 #include "smbd/pidfile.h"
@@ -181,15 +182,20 @@ _NORETURN_ static void max_runtime_handler(struct tevent_context *ev,
 }
 
 /*
-  pre-open the sam ldb to ensure the schema has been loaded. This
-  saves a lot of time in child processes  
+  pre-open the key databases. This saves a lot of time in child
+  processes
  */
-static void prime_samdb_schema(struct tevent_context *event_ctx)
+static void prime_ldb_databases(struct tevent_context *event_ctx)
 {
-       TALLOC_CTX *samdb_context;
-       samdb_context = talloc_new(event_ctx);
-       samdb_connect(samdb_context, event_ctx, cmdline_lp_ctx, system_session(samdb_context, cmdline_lp_ctx));
-       talloc_free(samdb_context);
+       TALLOC_CTX *db_context;
+       db_context = talloc_new(event_ctx);
+
+       samdb_connect(db_context, event_ctx, cmdline_lp_ctx, system_session(cmdline_lp_ctx));
+       privilege_connect(db_context, event_ctx, cmdline_lp_ctx);
+       schannel_db_connect(db_context, event_ctx, cmdline_lp_ctx);
+
+       /* we deliberately leave these open, which allows them to be
+        * re-used in ldb_wrap_connect() */
 }
 
 
@@ -320,7 +326,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
        umask(0);
 
        DEBUG(0,("%s version %s started.\n", binary_name, SAMBA_VERSION_STRING));
-       DEBUGADD(0,("Copyright Andrew Tridgell and the Samba Team 1992-2009\n"));
+       DEBUGADD(0,("Copyright Andrew Tridgell and the Samba Team 1992-2010\n"));
 
        if (sizeof(uint16_t) < 2 || sizeof(uint32_t) < 4 || sizeof(uint64_t) < 8) {
                DEBUG(0,("ERROR: Samba is not configured correctly for the word size on your machine\n"));
@@ -370,6 +376,9 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
           should hang off that */
        event_ctx = s4_event_context_init(talloc_autofree_context());
 
+       /* setup this as the default context */
+       s4_event_context_set_default(event_ctx);
+
        if (event_ctx == NULL) {
                DEBUG(0,("Initializing event context failed\n"));
                return 1;
@@ -398,7 +407,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
                                 discard_const(binary_name));
        }
 
-       prime_samdb_schema(event_ctx);
+       prime_ldb_databases(event_ctx);
 
        status = setup_parent_messaging(event_ctx, cmdline_lp_ctx);
        if (!NT_STATUS_IS_OK(status)) {