From: Samuel Cabrero Date: Wed, 27 Feb 2019 13:42:07 +0000 (+0100) Subject: s3:rpc_server: Initialize epmd connection endpoints X-Git-Tag: ldb-2.2.0~1337 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0e6d138c8e1d56e74cf465394d8f089ff4e85849;p=thirdparty%2Fsamba.git s3:rpc_server: Initialize epmd connection endpoints Signed-off-by: Samuel Cabrero Reviewed-by: Andrew Bartlett --- diff --git a/source3/rpc_server/epmd.c b/source3/rpc_server/epmd.c index 952ad4f29e5..148a7e4655d 100644 --- a/source3/rpc_server/epmd.c +++ b/source3/rpc_server/epmd.c @@ -31,6 +31,7 @@ #include "librpc/gen_ndr/ndr_epmapper_scompat.h" #include "rpc_server/rpc_server.h" +#include "rpc_server/rpc_service_setup.h" #include "rpc_server/rpc_sock_helper.h" #include "rpc_server/epmapper/srv_epmapper.h" #include "rpc_server/epmd.h" @@ -138,6 +139,7 @@ void start_epmd(struct tevent_context *ev_ctx, pid_t pid; int rc; const struct dcesrv_endpoint_server *ep_server = NULL; + struct dcesrv_endpoint *e = NULL; DEBUG(1, ("Forking Endpoint Mapper Daemon\n")); @@ -204,6 +206,38 @@ void start_epmd(struct tevent_context *ev_ctx, exit(1); } + DBG_INFO("Initializing DCE/RPC connection endpoints\n"); + + for (e = dce_ctx->endpoint_list; e; e = e->next) { + enum dcerpc_transport_t transport = + dcerpc_binding_get_transport(e->ep_description); + dcerpc_ncacn_termination_fn term_fn = NULL; + + if (transport == NCACN_HTTP) { + continue; + } + + if (transport == NCALRPC) { + term_fn = srv_epmapper_delete_endpoints; + } + + status = dcesrv_setup_endpoint_sockets(ev_ctx, + msg_ctx, + dce_ctx, + e, + NULL, /* binding vector */ + term_fn, + NULL); /* termination_data */ + if (!NT_STATUS_IS_OK(status)) { + char *ep_string = dcerpc_binding_string( + dce_ctx, e->ep_description); + DBG_ERR("Failed to setup endpoint '%s': %s\n", + ep_string, nt_errstr(status)); + TALLOC_FREE(ep_string); + exit(1); + } + } + status = dcesrv_setup_ncacn_ip_tcp_sockets(ev_ctx, msg_ctx, &ndr_table_epmapper,