summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_server.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-12-09 09:22:31 +0100
committerStefan Metzmacher <metze@samba.org>2008-12-09 13:59:02 +0100
commit03dba698a01e5562bf961a8948fb6e5b2d61fa40 (patch)
treebe9772fb23c1a5e6c2d962d28183b0770b72a646 /source4/rpc_server/dcerpc_server.c
parent8608fd87b0ba43e128b984e314047589e607f377 (diff)
downloadsamba-03dba698a01e5562bf961a8948fb6e5b2d61fa40.tar.gz
samba-03dba698a01e5562bf961a8948fb6e5b2d61fa40.tar.bz2
samba-03dba698a01e5562bf961a8948fb6e5b2d61fa40.zip
s4:rpc_server: initialize rpc server module also for the named pipe case
This fixes bug #5878. metze
Diffstat (limited to 'source4/rpc_server/dcerpc_server.c')
-rw-r--r--source4/rpc_server/dcerpc_server.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index 063e3ff3bd..5d95cb8c87 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -1422,6 +1422,38 @@ const struct dcesrv_endpoint_server *dcesrv_ep_server_byname(const char *name)
return NULL;
}
+void dcerpc_server_init(struct loadparm_context *lp_ctx)
+{
+ static bool initialized;
+ extern NTSTATUS dcerpc_server_wkssvc_init(void);
+ extern NTSTATUS dcerpc_server_drsuapi_init(void);
+ extern NTSTATUS dcerpc_server_winreg_init(void);
+ extern NTSTATUS dcerpc_server_spoolss_init(void);
+ extern NTSTATUS dcerpc_server_epmapper_init(void);
+ extern NTSTATUS dcerpc_server_srvsvc_init(void);
+ extern NTSTATUS dcerpc_server_netlogon_init(void);
+ extern NTSTATUS dcerpc_server_rpcecho_init(void);
+ extern NTSTATUS dcerpc_server_unixinfo_init(void);
+ extern NTSTATUS dcerpc_server_samr_init(void);
+ extern NTSTATUS dcerpc_server_remote_init(void);
+ extern NTSTATUS dcerpc_server_lsa_init(void);
+ extern NTSTATUS dcerpc_server_browser_init(void);
+ init_module_fn static_init[] = { STATIC_dcerpc_server_MODULES };
+ init_module_fn *shared_init;
+
+ if (initialized) {
+ return;
+ }
+ initialized = true;
+
+ shared_init = load_samba_modules(NULL, lp_ctx, "dcerpc_server");
+
+ run_init_functions(static_init);
+ run_init_functions(shared_init);
+
+ talloc_free(shared_init);
+}
+
/*
return the DCERPC module version, and the size of some critical types
This can be used by endpoint server modules to either detect compilation errors, or provide
@@ -1454,6 +1486,8 @@ _PUBLIC_ NTSTATUS dcesrv_init_ipc_context(TALLOC_CTX *mem_ctx, struct loadparm_c
NTSTATUS status;
struct dcesrv_context *dce_ctx;
+ dcerpc_server_init(lp_ctx);
+
status = dcesrv_init_context(mem_ctx, lp_ctx, lp_dcerpc_endpoint_servers(lp_ctx), &dce_ctx);
NT_STATUS_NOT_OK_RETURN(status);