s3-smbd: Start lsasd as deamon.
authorAndreas Schneider <asn@samba.org>
Tue, 2 Aug 2011 08:59:05 +0000 (10:59 +0200)
committerSimo Sorce <idra@samba.org>
Sun, 21 Aug 2011 13:05:02 +0000 (09:05 -0400)
Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Simo Sorce <idra@samba.org>
source3/smbd/server.c

index a9762e0b524ab62deb6d3eb6eb3b7c6c80c73c02..f6d26572891c50cfa6596d246bbe746fa88084dd 100644 (file)
@@ -42,6 +42,9 @@
 extern void start_epmd(struct tevent_context *ev_ctx,
                       struct messaging_context *msg_ctx);
 
 extern void start_epmd(struct tevent_context *ev_ctx,
                       struct messaging_context *msg_ctx);
 
+extern void start_lsasd(struct event_context *ev_ctx,
+                       struct messaging_context *msg_ctx);
+
 #ifdef WITH_DFS
 extern int dcelogin_atmost_once;
 #endif /* WITH_DFS */
 #ifdef WITH_DFS
 extern int dcelogin_atmost_once;
 #endif /* WITH_DFS */
@@ -1221,11 +1224,19 @@ extern void build_options(bool screen);
        /* only start other daemons if we are running as a daemon
         * -- bad things will happen if smbd is launched via inetd
         *  and we fork a copy of ourselves here */
        /* only start other daemons if we are running as a daemon
         * -- bad things will happen if smbd is launched via inetd
         *  and we fork a copy of ourselves here */
-       if (is_daemon && !interactive && !_lp_disable_spoolss()) {
-               bool bgq = lp_parm_bool(-1, "smbd", "backgroundqueue", true);
+       if (is_daemon && !interactive) {
+               enum rpc_service_mode_e lsarpc_mode = rpc_lsarpc_mode();
 
 
-               if (!printing_subsystem_init(ev_ctx, msg_ctx, true, bgq)) {
-                       exit(1);
+               if (lsarpc_mode == RPC_SERVICE_MODE_DAEMON) {
+                       start_lsasd(ev_ctx, msg_ctx);
+               }
+
+               if (!_lp_disable_spoolss()) {
+                       bool bgq = lp_parm_bool(-1, "smbd", "backgroundqueue", true);
+
+                       if (!printing_subsystem_init(ev_ctx, msg_ctx, true, bgq)) {
+                               exit(1);
+                       }
                }
        } else if (!_lp_disable_spoolss()) {
                if (!printing_subsystem_init(ev_ctx, msg_ctx, false, false)) {
                }
        } else if (!_lp_disable_spoolss()) {
                if (!printing_subsystem_init(ev_ctx, msg_ctx, false, false)) {