s3:rpc_server: Reinitialize dcesrv_context in external fssd daemon
authorSamuel Cabrero <scabrero@suse.de>
Tue, 26 Feb 2019 14:47:06 +0000 (15:47 +0100)
committerSamuel Cabrero <scabrero@sn-devel-184>
Fri, 20 Mar 2020 15:36:32 +0000 (15:36 +0000)
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/rpc_server/fssd.c
source3/rpc_server/fssd.h
source3/smbd/server.c

index c3b9695bc7ac16096d11545ce07f00b00c6185d1..283e456df55335918c13cc8ef926821083c4da29 100644 (file)
@@ -41,9 +41,6 @@
 
 #define DAEMON_NAME "fssd"
 
-void start_fssd(struct tevent_context *ev_ctx,
-               struct messaging_context *msg_ctx);
-
 static void fssd_reopen_logs(void)
 {
        const struct loadparm_substitution *lp_sub =
@@ -150,7 +147,8 @@ static bool fss_init_cb(void *ptr)
 }
 
 void start_fssd(struct tevent_context *ev_ctx,
-               struct messaging_context *msg_ctx)
+               struct messaging_context *msg_ctx,
+               struct dcesrv_context *dce_ctx)
 {
        struct rpc_srv_callbacks fss_cb;
        NTSTATUS status;
@@ -210,6 +208,15 @@ void start_fssd(struct tevent_context *ev_ctx,
                exit(1);
        }
 
+       DBG_INFO("Reinitializing DCE/RPC server context\n");
+
+       status = dcesrv_reinit_context(dce_ctx);
+       if (!NT_STATUS_IS_OK(status)) {
+               DBG_ERR("Failed to reinit DCE/RPC context: %s\n",
+                       nt_errstr(status));
+               exit(1);
+       }
+
        status = rpc_FileServerVssAgent_init(&fss_cb);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("Failed to register fssd rpc interface! (%s)\n",
index 48460a2cdbc948d26070b4bdcff48d2e86082836..1a8318860cf360576b410cc79cb026fa469c5b66 100644 (file)
 #include "replace.h"
 #include "messages.h"
 
+struct dcesrv_context;
+
 void start_fssd(struct tevent_context *ev_ctx,
-                struct messaging_context *msg_ctx);
+               struct messaging_context *msg_ctx,
+               struct dcesrv_context *dce_ctx);
 
 #endif
index 63646364238dd1dd5fba5a370d389255ae4d5de7..f1c461eb1eab36180cf3ad61c70f1342d7b33be0 100644 (file)
@@ -2114,7 +2114,7 @@ extern void build_options(bool screen);
                }
 
                if (rpc_fss_daemon() == RPC_DAEMON_FORK) {
-                       start_fssd(ev_ctx, msg_ctx);
+                       start_fssd(ev_ctx, msg_ctx, dce_ctx);
                }
 
                if (!lp__disable_spoolss() &&