rpcrt4: Return an exception code from NdrAsyncClientCall.

Otherwise the caller may decide to wait for the call termination which
will never happen.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Dmitry Timoshkov 2019-09-02 15:45:42 +08:00 committed by Alexandre Julliard
parent cdd1fd835a
commit 0c2f5f8b15
1 changed files with 4 additions and 2 deletions

View File

@ -1773,6 +1773,7 @@ static void do_ndr_async_client_call( const MIDL_STUB_DESC *pStubDesc, PFORMAT_S
LONG_PTR CDECL DECLSPEC_HIDDEN ndr_async_client_call( PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat,
void **stack_top )
{
LONG_PTR ret = 0;
const NDR_PROC_HEADER *pProcHeader = (const NDR_PROC_HEADER *)&pFormat[0];
TRACE("pStubDesc %p, pFormat %p, ...\n", pStubDesc, pFormat);
@ -1786,14 +1787,15 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr_async_client_call( PMIDL_STUB_DESC pStubDesc,
__EXCEPT_ALL
{
FIXME("exception %x during ndr_async_client_call()\n", GetExceptionCode());
ret = GetExceptionCode();
}
__ENDTRY
}
else
do_ndr_async_client_call( pStubDesc, pFormat, stack_top);
TRACE("returning 0\n");
return 0;
TRACE("returning %ld\n", ret);
return ret;
}
RPC_STATUS NdrpCompleteAsyncClientCall(RPC_ASYNC_STATE *pAsync, void *Reply)