s3-rpc_server: Replace RPC_SERVICE_MODE_DAEMON checks
authorSimo Sorce <idra@samba.org>
Wed, 10 Aug 2011 19:23:20 +0000 (15:23 -0400)
committerSimo Sorce <idra@samba.org>
Sun, 21 Aug 2011 13:05:03 +0000 (09:05 -0400)
Use rpc_daemon_type() macros where appropriate instead.

Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Simo Sorce <idra@samba.org>
source3/printing/queue_process.c
source3/rpc_server/rpc_config.c
source3/rpc_server/rpc_config.h
source3/rpc_server/rpc_service_setup.c
source3/smbd/server.c

index 9039e5cd08b3b58460dd304eeeea48857ab3137f..bd26b02031bd1f1046e3c25c736e90f989d4ef78 100644 (file)
@@ -29,7 +29,7 @@
 #include "serverid.h"
 #include "locking/proto.h"
 #include "smbd/proto.h"
-#include "rpc_server/rpc_service_setup.h"
+#include "rpc_server/rpc_config.h"
 #include "printing/load.h"
 
 extern pid_t start_spoolssd(struct event_context *ev_ctx,
@@ -317,7 +317,6 @@ bool printing_subsystem_init(struct tevent_context *ev_ctx,
                             bool start_daemons,
                             bool background_queue)
 {
-       enum rpc_service_mode_e spoolss_mode = rpc_spoolss_mode();
        pid_t pid = -1;
 
        if (!print_backend_init(msg_ctx)) {
@@ -326,7 +325,7 @@ bool printing_subsystem_init(struct tevent_context *ev_ctx,
 
        /* start spoolss daemon */
        /* start as a separate daemon only if enabled */
-       if (start_daemons && spoolss_mode == RPC_SERVICE_MODE_DAEMON) {
+       if (start_daemons && rpc_spoolss_daemon() == RPC_DAEMON_FORK) {
 
                pid = start_spoolssd(ev_ctx, msg_ctx);
 
index a706a11cea0e91b4e1fc9bcbd75a47f711560907..76df479cf41514995b586467ced29964da3a0b67 100644 (file)
@@ -60,8 +60,6 @@ enum rpc_service_mode_e rpc_service_mode(const char *name)
                state = RPC_SERVICE_MODE_EMBEDDED;
        } else if (strcasecmp_m(rpcsrv_type, "external") == 0) {
                state = RPC_SERVICE_MODE_EXTERNAL;
-       } else if (strcasecmp(rpcsrv_type, "daemon") == 0) {
-               state = RPC_SERVICE_MODE_DAEMON;
        } else {
                state = RPC_SERVICE_MODE_DISABLED;
        }
index 4d85d595904b97252d2ae4f1faf583cd4cb9ee46..d1c26dd3667811b58d18b00e6badcc9eed11d368 100644 (file)
@@ -26,8 +26,7 @@
 enum rpc_service_mode_e {
        RPC_SERVICE_MODE_DISABLED = 0,
        RPC_SERVICE_MODE_EMBEDDED,
-       RPC_SERVICE_MODE_EXTERNAL,
-       RPC_SERVICE_MODE_DAEMON
+       RPC_SERVICE_MODE_EXTERNAL
 };
 
 /**
index 1314d111fe9c912370e8d3282f765b53fd959d82..29d7bf238a2b84c5f1806bd6218d1376e252b7c2 100644 (file)
@@ -57,9 +57,11 @@ static bool rpc_setup_epmapper(struct tevent_context *ev_ctx,
                               struct messaging_context *msg_ctx)
 {
        enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
+       enum rpc_daemon_type_e epm_type = rpc_epmapper_daemon();
        NTSTATUS status;
 
-       if (epm_mode != RPC_SERVICE_MODE_DISABLED) {
+       if (epm_mode != RPC_SERVICE_MODE_DISABLED &&
+           epm_type != RPC_DAEMON_DISABLED) {
                status = rpc_epmapper_init(NULL);
                if (!NT_STATUS_IS_OK(status)) {
                        return false;
@@ -192,6 +194,7 @@ static bool rpc_setup_lsarpc(struct tevent_context *ev_ctx,
        struct dcerpc_binding_vector *v2;
        enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
        enum rpc_service_mode_e lsarpc_mode = rpc_lsarpc_mode();
+       enum rpc_daemon_type_e lsasd_type = rpc_lsasd_daemon();
        NTSTATUS status;
        bool ok;
 
@@ -201,6 +204,7 @@ static bool rpc_setup_lsarpc(struct tevent_context *ev_ctx,
        }
 
        if (lsarpc_mode == RPC_SERVICE_MODE_EMBEDDED &&
+           lsasd_type != RPC_DAEMON_DISABLED &&
            epm_mode != RPC_SERVICE_MODE_DISABLED) {
                v2 = dcerpc_binding_vector_dup(talloc_tos(), v);
                if (v2 == NULL) {
@@ -251,6 +255,7 @@ static bool rpc_setup_samr(struct tevent_context *ev_ctx,
        struct dcerpc_binding_vector *v2;
        enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
        enum rpc_service_mode_e samr_mode = rpc_samr_mode();
+       enum rpc_daemon_type_e lsasd_type = rpc_lsasd_daemon();
        NTSTATUS status;
        bool ok;
 
@@ -260,6 +265,7 @@ static bool rpc_setup_samr(struct tevent_context *ev_ctx,
        }
 
        if (samr_mode == RPC_SERVICE_MODE_EMBEDDED &&
+           lsasd_type != RPC_DAEMON_DISABLED &&
            epm_mode != RPC_SERVICE_MODE_DISABLED) {
                v2 = dcerpc_binding_vector_dup(talloc_tos(), v);
                if (v2 == NULL) {
@@ -310,6 +316,7 @@ static bool rpc_setup_netlogon(struct tevent_context *ev_ctx,
        struct dcerpc_binding_vector *v2;
        enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
        enum rpc_service_mode_e netlogon_mode = rpc_netlogon_mode();
+       enum rpc_daemon_type_e lsasd_type = rpc_lsasd_daemon();
        NTSTATUS status;
        bool ok;
 
@@ -319,6 +326,7 @@ static bool rpc_setup_netlogon(struct tevent_context *ev_ctx,
        }
 
        if (netlogon_mode == RPC_SERVICE_MODE_EMBEDDED &&
+           lsasd_type != RPC_DAEMON_DISABLED &&
            epm_mode != RPC_SERVICE_MODE_DISABLED) {
                v2 = dcerpc_binding_vector_dup(talloc_tos(), v);
                if (v2 == NULL) {
@@ -621,28 +629,29 @@ static bool rpc_setup_spoolss(struct tevent_context *ev_ctx,
        struct rpc_srv_callbacks spoolss_cb;
        struct dcerpc_binding_vector *v;
        enum rpc_service_mode_e spoolss_mode = rpc_spoolss_mode();
-       NTSTATUS status;
+       enum rpc_daemon_type_e spoolss_type = rpc_spoolss_daemon();
+       NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
 
        if (_lp_disable_spoolss() ||
+           spoolss_type == RPC_DAEMON_DISABLED ||
            spoolss_mode == RPC_SERVICE_MODE_DISABLED) {
                return true;
        }
 
-       if (spoolss_mode == RPC_SERVICE_MODE_EMBEDDED) {
+       if (spoolss_type == RPC_DAEMON_EMBEDDED) {
                spoolss_cb.init         = spoolss_init_cb;
                spoolss_cb.shutdown     = spoolss_shutdown_cb;
                spoolss_cb.private_data = msg_ctx;
 
                status = rpc_spoolss_init(&spoolss_cb);
-       } else if (spoolss_mode == RPC_SERVICE_MODE_EXTERNAL ||
-                  spoolss_mode == RPC_SERVICE_MODE_DAEMON) {
+       } else if (spoolss_type == RPC_DAEMON_FORK) {
                status = rpc_spoolss_init(NULL);
        }
        if (!NT_STATUS_IS_OK(status)) {
                return false;
        }
 
-       if (spoolss_mode == RPC_SERVICE_MODE_EMBEDDED) {
+       if (spoolss_type == RPC_DAEMON_EMBEDDED) {
                enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
 
                if (epm_mode != RPC_SERVICE_MODE_DISABLED) {
index f6d26572891c50cfa6596d246bbe746fa88084dd..cc53f6962686df803e2ad310bddfa2d0a1616001 100644 (file)
@@ -33,6 +33,7 @@
 #include "ctdbd_conn.h"
 #include "printing/queue_process.h"
 #include "rpc_server/rpc_service_setup.h"
+#include "rpc_server/rpc_config.h"
 #include "serverid.h"
 #include "passdb.h"
 #include "auth.h"
@@ -1210,9 +1211,7 @@ extern void build_options(bool screen);
        }
 
        if (is_daemon && !interactive) {
-               enum rpc_service_mode_e epm_mode = rpc_epmapper_mode();
-
-               if (epm_mode == RPC_SERVICE_MODE_DAEMON) {
+               if (rpc_epmapper_daemon() == RPC_DAEMON_FORK) {
                        start_epmd(ev_ctx, msg_ctx);
                }
        }
@@ -1225,20 +1224,21 @@ extern void build_options(bool screen);
         * -- bad things will happen if smbd is launched via inetd
         *  and we fork a copy of ourselves here */
        if (is_daemon && !interactive) {
-               enum rpc_service_mode_e lsarpc_mode = rpc_lsarpc_mode();
 
-               if (lsarpc_mode == RPC_SERVICE_MODE_DAEMON) {
+               if (rpc_lsasd_daemon() == RPC_DAEMON_FORK) {
                        start_lsasd(ev_ctx, msg_ctx);
                }
 
-               if (!_lp_disable_spoolss()) {
+               if (!_lp_disable_spoolss() &&
+                   (rpc_spoolss_daemon() != RPC_DAEMON_DISABLED)) {
                        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()) {
+       } else if (!_lp_disable_spoolss() &&
+                  (rpc_spoolss_daemon() != RPC_DAEMON_DISABLED)) {
                if (!printing_subsystem_init(ev_ctx, msg_ctx, false, false)) {
                        exit(1);
                }