NdrSendReceive: Update the message buffer info after the call to I_RpcSendReceive. Modified: trunk/reactos/lib/rpcrt4/ndr_midl.c _____
Modified: trunk/reactos/lib/rpcrt4/ndr_midl.c --- trunk/reactos/lib/rpcrt4/ndr_midl.c 2005-04-02 14:26:56 UTC (rev 14441) +++ trunk/reactos/lib/rpcrt4/ndr_midl.c 2005-04-02 15:11:36 UTC (rev 14442) @@ -233,12 +233,12 @@
unsigned char *WINAPI NdrGetBuffer(MIDL_STUB_MESSAGE *stubmsg, unsigned long buflen, RPC_BINDING_HANDLE handle) { TRACE("(stubmsg == ^%p, buflen == %lu, handle == %p): wild guess.\n", stubmsg, buflen, handle); - + assert( stubmsg && stubmsg->RpcMsg );
/* I guess this is our chance to put the binding handle into the RPC_MESSAGE */ stubmsg->RpcMsg->Handle = handle; - + stubmsg->RpcMsg->BufferLength = buflen; if (I_RpcGetBuffer(stubmsg->RpcMsg) != S_OK) return NULL; @@ -248,6 +248,7 @@ stubmsg->BufferEnd = stubmsg->Buffer + stubmsg->BufferLength; return (stubmsg->Buffer = (unsigned char *)stubmsg->RpcMsg->Buffer); } +
/*********************************************************************** * NdrFreeBuffer [RPCRT4.@] */ @@ -262,28 +263,34 @@
/*********************************************************************** * * NdrSendReceive [RPCRT4.@] */ -unsigned char *WINAPI NdrSendReceive( MIDL_STUB_MESSAGE *stubmsg, unsigned char *buffer ) +unsigned char *WINAPI NdrSendReceive( MIDL_STUB_MESSAGE *pStubMsg, unsigned char *buffer ) { - TRACE("(stubmsg == ^%p, buffer == ^%p)\n", stubmsg, buffer); + TRACE("(pStubMsg == ^%p, buffer == ^%p)\n", pStubMsg, buffer);
/* FIXME: how to handle errors? (raise exception?) */ - if (!stubmsg) { + if (!pStubMsg) { ERR("NULL stub message. No action taken.\n"); return NULL; } - if (!stubmsg->RpcMsg) { + if (!pStubMsg->RpcMsg) { ERR("RPC Message not present in stub message. No action taken.\n"); return NULL; }
/* FIXME: Seems wrong. Where should this really come from, and when? */ - stubmsg->RpcMsg->DataRepresentation = NDR_LOCAL_DATA_REPRESENTATION; + pStubMsg->RpcMsg->DataRepresentation = NDR_LOCAL_DATA_REPRESENTATION;
- if (I_RpcSendReceive(stubmsg->RpcMsg) != RPC_S_OK) { + if (I_RpcSendReceive(pStubMsg->RpcMsg) != RPC_S_OK) { WARN("I_RpcSendReceive did not return success.\n"); /* FIXME: raise exception? */ + return NULL; }
+ pStubMsg->BufferLength = pStubMsg->RpcMsg->BufferLength; + pStubMsg->BufferStart = pStubMsg->RpcMsg->Buffer; + pStubMsg->BufferEnd = pStubMsg->BufferStart + pStubMsg->BufferLength; + pStubMsg->Buffer = pStubMsg->BufferStart; + /* FIXME: is this the right return value? */ return NULL; }