s3-spoolssd: Start the spoolss service correctly.
authorAndreas Schneider <asn@samba.org>
Tue, 29 Mar 2011 08:52:32 +0000 (10:52 +0200)
committerGünther Deschner <gd@samba.org>
Tue, 29 Mar 2011 14:03:53 +0000 (16:03 +0200)
Signed-off-by: Günther Deschner <gd@samba.org>
source3/rpc_server/rpc_ep_setup.c
source3/smbd/server.c

index a0c54c7e99a60a8acb098d9a9249e9e7d2226a59..d517bb88516602596a3831f563b61088309c24f7 100644 (file)
@@ -1103,14 +1103,24 @@ bool dcesrv_ep_setup(struct tevent_context *ev_ctx,
                return false;
        }
 
-       spoolss_cb.init         = spoolss_init_cb;
-       spoolss_cb.shutdown     = spoolss_shutdown_cb;
-       spoolss_cb.private_data = ep_ctx;
-       if (!NT_STATUS_IS_OK(rpc_spoolss_init(&spoolss_cb))) {
-               return false;
+       rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
+                                          "rpc_server",
+                                          "spoolss",
+                                          "embedded");
+       if (StrCaseCmp(rpcsrv_type, "embedded") == 0) {
+               spoolss_cb.init         = spoolss_init_cb;
+               spoolss_cb.shutdown     = spoolss_shutdown_cb;
+               spoolss_cb.private_data = ep_ctx;
+               if (!NT_STATUS_IS_OK(rpc_spoolss_init(&spoolss_cb))) {
+                       return false;
+               }
+       } else if (StrCaseCmp(rpcsrv_type, "daemon") == 0 ||
+                  StrCaseCmp(rpcsrv_type, "external") == 0) {
+               if (!NT_STATUS_IS_OK(rpc_spoolss_init(NULL))) {
+                       return false;
+               }
        }
 
-
        svcctl_cb.init         = svcctl_init_cb;
        svcctl_cb.shutdown     = svcctl_shutdown_cb;
        svcctl_cb.private_data = ep_ctx;
index 4b7637f89e7da056986ca007a3a2107f4e4ac977..8c7b146e19e9701bc1464ead080e6f7cf70a867b 100644 (file)
@@ -1253,7 +1253,7 @@ extern void build_options(bool screen);
                rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
                                                   "rpc_server", "spoolss",
                                                   "embedded");
-               if (StrCaseCmp(rpcsrv_type, "embedded") != 0) {
+               if (StrCaseCmp(rpcsrv_type, "daemon") == 0) {
                        start_spoolssd(smbd_event_context(),
                                       smbd_messaging_context());
                }