summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcerpc_server.c
diff options
context:
space:
mode:
authorJulien Kerihuel <j.kerihuel@openchange.org>2008-05-15 13:55:23 +0200
committerStefan Metzmacher <metze@samba.org>2008-05-16 08:54:34 +0200
commit8651def04c140da23f564be46b86c5e1f33349c4 (patch)
tree907d5d52c42ff006ba0942e7572ac5c255c5665d /source4/rpc_server/dcerpc_server.c
parent25a82b8fc93ca01b7f142a680ad9a327e8cb8fa9 (diff)
downloadsamba-8651def04c140da23f564be46b86c5e1f33349c4.tar.gz
samba-8651def04c140da23f564be46b86c5e1f33349c4.tar.bz2
samba-8651def04c140da23f564be46b86c5e1f33349c4.zip
The following patch calls the op_bind operation for an interface which context is altered by dcerpc alter_context requests. It prevents dcerpc_server from returning errors (nca_s_fault_access_denied, then nca_s_fault_context_mismatch in further client requests) and keeps the connection alive.
Signed-off-by: Stefan Metzmacher <metze@samba.org> (This used to be commit 718f9ce6889346c92894e868f0678fbe404a43ab)
Diffstat (limited to 'source4/rpc_server/dcerpc_server.c')
-rw-r--r--source4/rpc_server/dcerpc_server.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index eb467709c9..e0351bb259 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -688,6 +688,7 @@ static NTSTATUS dcesrv_alter_new_context(struct dcesrv_call_state *call, uint32_
struct dcesrv_connection_context *context;
const struct dcesrv_interface *iface;
struct GUID uuid, *transfer_syntax_uuid;
+ NTSTATUS status;
if_version = call->pkt.u.alter.ctx_list[0].abstract_syntax.if_version;
uuid = call->pkt.u.alter.ctx_list[0].abstract_syntax.uuid;
@@ -721,6 +722,13 @@ static NTSTATUS dcesrv_alter_new_context(struct dcesrv_call_state *call, uint32_
DLIST_ADD(call->conn->contexts, context);
call->context = context;
+ if (iface) {
+ status = iface->bind(call, iface);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+ }
+
return NT_STATUS_OK;
}