_PUBLIC_ NTSTATUS dcesrv_init_context(TALLOC_CTX *mem_ctx,
struct loadparm_context *lp_ctx,
- const char **endpoint_servers,
struct dcesrv_context_callbacks *cb,
struct dcesrv_context **_dce_ctx)
{
- NTSTATUS status;
struct dcesrv_context *dce_ctx;
- int i;
-
- if (!endpoint_servers) {
- DEBUG(0,("dcesrv_init_context: no endpoint servers configured\n"));
- return NT_STATUS_INTERNAL_ERROR;
- }
dce_ctx = talloc_zero(mem_ctx, struct dcesrv_context);
NT_STATUS_HAVE_NO_MEMORY(dce_ctx);
dce_ctx->callbacks = *cb;
}
+ *_dce_ctx = dce_ctx;
+ return NT_STATUS_OK;
+}
+
+_PUBLIC_ NTSTATUS dcesrv_init_ep_servers(struct dcesrv_context *dce_ctx,
+ const char **endpoint_servers)
+{
+ NTSTATUS status;
+ int i;
+
+ if (endpoint_servers == NULL) {
+ DBG_ERR("No endpoint servers configured\n");
+ return NT_STATUS_INTERNAL_ERROR;
+ }
+
for (i=0;endpoint_servers[i];i++) {
const struct dcesrv_endpoint_server *ep_server;
}
}
- *_dce_ctx = dce_ctx;
return NT_STATUS_OK;
}
const struct dcesrv_interface *iface,
const struct security_descriptor *sd);
NTSTATUS dcerpc_register_ep_server(const struct dcesrv_endpoint_server *ep_server);
+NTSTATUS dcesrv_init_ep_servers(struct dcesrv_context *dce_ctx,
+ const char **ep_servers);
const struct dcesrv_endpoint_server *dcesrv_ep_server_byname(const char *name);
NTSTATUS dcesrv_init_context(TALLOC_CTX *mem_ctx,
struct loadparm_context *lp_ctx,
- const char **endpoint_servers,
struct dcesrv_context_callbacks *cb,
struct dcesrv_context **_dce_ctx);
{
NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
struct dcesrv_context *dce_ctx;
+ const char **ep_servers = NULL;
dcerpc_server_init(task->lp_ctx);
status = dcesrv_init_context(task->event_ctx,
task->lp_ctx,
- lpcfg_dcerpc_endpoint_servers(task->lp_ctx),
&srv_callbacks,
&dce_ctx);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
+ ep_servers = lpcfg_dcerpc_endpoint_servers(task->lp_ctx);
+ status = dcesrv_init_ep_servers(dce_ctx, ep_servers);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
/* Make sure the directory for NCALRPC exists */
if (!directory_exist(lpcfg_ncalrpc_dir(task->lp_ctx))) {
mkdir(lpcfg_ncalrpc_dir(task->lp_ctx), 0755);
address, NULL);
torture_assert_ntstatus_ok(tctx, status, "starting smb server");
- status = dcesrv_init_context(tctx, tctx->lp_ctx, endpoints,
- &srv_cb, &dce_ctx);
+ status = dcesrv_init_context(tctx, tctx->lp_ctx, &srv_cb, &dce_ctx);
torture_assert_ntstatus_ok(tctx, status,
"unable to initialize DCE/RPC server");
+ status = dcesrv_init_ep_servers(dce_ctx, endpoints);
+ torture_assert_ntstatus_ok(tctx,
+ status,
+ "unable to initialize DCE/RPC ep servers");
+
for (e=dce_ctx->endpoint_list;e;e=e->next) {
status = dcesrv_add_ep(dce_ctx, tctx->lp_ctx,
e, tctx->ev,