From: Samuel Cabrero Date: Tue, 26 Feb 2019 14:47:06 +0000 (+0100) Subject: s3:rpc_server: Reinitialize dcesrv_context in external fssd daemon X-Git-Tag: ldb-2.2.0~1354 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eeb6888f4223426f0d68640be822d9370bd4f998;p=thirdparty%2Fsamba.git s3:rpc_server: Reinitialize dcesrv_context in external fssd daemon Signed-off-by: Samuel Cabrero Reviewed-by: Andrew Bartlett --- diff --git a/source3/rpc_server/fssd.c b/source3/rpc_server/fssd.c index c3b9695bc7a..283e456df55 100644 --- a/source3/rpc_server/fssd.c +++ b/source3/rpc_server/fssd.c @@ -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", diff --git a/source3/rpc_server/fssd.h b/source3/rpc_server/fssd.h index 48460a2cdbc..1a8318860cf 100644 --- a/source3/rpc_server/fssd.h +++ b/source3/rpc_server/fssd.h @@ -25,7 +25,10 @@ #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 diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 63646364238..f1c461eb1ea 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -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() &&