summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_pipe_hnd.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server/srv_pipe_hnd.c')
-rw-r--r--source3/rpc_server/srv_pipe_hnd.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/source3/rpc_server/srv_pipe_hnd.c b/source3/rpc_server/srv_pipe_hnd.c
index e7d94d70ec..8bc2bdd505 100644
--- a/source3/rpc_server/srv_pipe_hnd.c
+++ b/source3/rpc_server/srv_pipe_hnd.c
@@ -57,7 +57,8 @@ pipes_struct *get_next_internal_pipe(pipes_struct *p)
const char *get_pipe_name_tos(struct pipes_struct *p)
{
- return get_pipe_name_from_syntax(talloc_tos(), &p->syntax);
+ return get_pipe_name_from_syntax(talloc_tos(),
+ &p->interface->syntax_id);
}
/****************************************************************************
@@ -119,6 +120,14 @@ static struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
return NULL;
}
+ p->interface = get_iface_from_syntax(syntax);
+ if (p->interface == NULL) {
+ DEBUG(10, ("Could not find ndr table for syntax\n"));
+ TALLOC_FREE(p->mem_ctx);
+ TALLOC_FREE(p);
+ return NULL;
+ }
+
if (!init_pipe_handle_list(p, syntax)) {
DEBUG(0,("open_rpc_pipe_p: init_pipe_handles failed.\n"));
talloc_destroy(p->mem_ctx);
@@ -161,8 +170,6 @@ static struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
*/
prs_init_empty(&p->out_data.rdata, p->mem_ctx, MARSHALL);
- p->syntax = *syntax;
-
DEBUG(4,("Created internal pipe %s (pipes_open=%d)\n",
get_pipe_name_from_syntax(talloc_tos(), syntax), pipes_open));