diff options
author | Andreas Schneider <asn@samba.org> | 2011-05-25 16:03:43 +0200 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2011-06-01 12:02:15 +0200 |
commit | e39e09ffb5baa527b03454c905ccd1292fa9c93f (patch) | |
tree | fe06fcad4b0dbb0786621d9d7283f90757d0266f | |
parent | 44fb1140bb92259f10852e24bde82a13f926ca15 (diff) | |
download | samba-e39e09ffb5baa527b03454c905ccd1292fa9c93f.tar.gz samba-e39e09ffb5baa527b03454c905ccd1292fa9c93f.tar.bz2 samba-e39e09ffb5baa527b03454c905ccd1292fa9c93f.zip |
s3-rpc_server: Store the ndr syntax id in the pipe context.
The client tell us in the rpc bind to which rpc service it wants to
connect. We did set the p->syntax earlier by guessing to which pipe name
it connects, but we don't know to which rpc service it wants to bind
until we read the first packet.
-rw-r--r-- | source3/rpc_server/srv_pipe.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c index 72c8f80959..a6e43b65ec 100644 --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c @@ -331,19 +331,19 @@ bool setup_fault_pdu(struct pipes_struct *p, NTSTATUS fault_status) static bool check_bind_req(struct pipes_struct *p, struct ndr_syntax_id* abstract, struct ndr_syntax_id* transfer, - uint32 context_id) + uint32_t context_id) { struct pipe_rpc_fns *context_fns; DEBUG(3,("check_bind_req for %s\n", - get_pipe_name_from_syntax(talloc_tos(), &p->syntax))); + get_pipe_name_from_syntax(talloc_tos(), abstract))); /* we have to check all now since win2k introduced a new UUID on the lsaprpc pipe */ if (rpc_srv_pipe_exists_by_id(abstract) && ndr_syntax_id_equal(transfer, &ndr_transfer_syntax)) { - DEBUG(3, ("check_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n", - rpc_srv_get_pipe_cli_name(abstract), - rpc_srv_get_pipe_srv_name(abstract))); + DEBUG(3, ("check_bind_req: %s -> %s rpc service\n", + rpc_srv_get_pipe_cli_name(abstract), + rpc_srv_get_pipe_srv_name(abstract))); } else { return false; } @@ -358,6 +358,7 @@ static bool check_bind_req(struct pipes_struct *p, context_fns->n_cmds = rpc_srv_get_pipe_num_cmds(abstract); context_fns->cmds = rpc_srv_get_pipe_cmds(abstract); context_fns->context_id = context_id; + context_fns->syntax = *abstract; /* add to the list of open contexts */ |