librpc/dcesrv_core: let dcesrv_call_dispatch_local() call context->iface->reply()
authorStefan Metzmacher <metze@samba.org>
Fri, 23 Oct 2020 09:56:19 +0000 (11:56 +0200)
committerSamuel Cabrero <scabrero@sn-devel-184>
Fri, 23 Oct 2020 17:24:37 +0000 (17:24 +0000)
This is needed in order to get NDR_PRINT_FUNCTION_DEBUG(..., NDR_OUT) called.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14551

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Samuel Cabrero <scabrero@samba.org>
Autobuild-User(master): Samuel Cabrero <scabrero@samba.org>
Autobuild-Date(master): Fri Oct 23 17:24:37 UTC 2020 on sn-devel-184

librpc/rpc/dcesrv_core.c

index 35d7947f438a4ad4dcc8d6fc2be0af53c3fb1d50..064ad38b8d68d839f82b3e3d90813e9065d26621 100644 (file)
@@ -3011,6 +3011,16 @@ _PUBLIC_ NTSTATUS dcesrv_call_dispatch_local(struct dcesrv_call_state *call)
        /* This can never go async for now! */
        SMB_ASSERT(!(call->state_flags & DCESRV_CALL_STATE_FLAG_ASYNC));
 
+       /* call the reply function */
+       status = call->context->iface->reply(call, call, call->r);
+       if (!NT_STATUS_IS_OK(status)) {
+               DBG_ERR("DCE/RPC fault in call %s:%02X - %s\n",
+                       call->context->iface->name,
+                       call->pkt.u.request.opnum,
+                       dcerpc_errstr(call, call->fault_code));
+               return dcerpc_fault_to_nt_status(call->fault_code);
+       }
+
        push = ndr_push_init_ctx(call);
        if (push == NULL) {
                return NT_STATUS_NO_MEMORY;