libfreerdp-core: fix pipe call id check

This commit is contained in:
Marc-André Moreau 2012-12-07 22:27:05 -05:00
parent 731e606c15
commit 282c950522
2 changed files with 3 additions and 15 deletions

View File

@ -426,7 +426,7 @@ int rpc_recv_pdu_fragment(rdpRpc* rpc)
ReleaseMutex(rpc->VirtualConnection->DefaultInChannel->Mutex);
if (header->common.call_id == rpc->PipeCallId)
if ((rpc->PipeCallId) && (header->common.call_id == rpc->PipeCallId))
{
/* TsProxySetupReceivePipe response! */
}
@ -519,7 +519,7 @@ RPC_PDU* rpc_recv_pdu(rdpRpc* rpc)
if (rpc->StubFragCount == 0)
rpc->StubCallId = header->common.call_id;
if (rpc->StubCallId == rpc->PipeCallId)
if ((rpc->PipeCallId) && (header->common.call_id == rpc->PipeCallId))
{
/* TsProxySetupReceivePipe response! */
}
@ -540,14 +540,8 @@ RPC_PDU* rpc_recv_pdu(rdpRpc* rpc)
* combined stub data length of all remaining fragment PDUs.
*/
//printf("Receiving Fragment #%d FragStubLength: %d FragLength: %d AllocHint: %d StubOffset: %d\n",
// rpc->StubFragCount, StubLength, header->common.frag_length, header->response.alloc_hint, rpc->StubOffset);
if ((header->response.alloc_hint == StubLength))
{
//printf("Reassembled PDU (%d):\n", rpc->StubOffset);
//freerdp_hexdump(rpc->StubBuffer, rpc->StubOffset);
rpc->pdu->CallId = rpc->StubCallId;
rpc->StubLength = rpc->StubOffset;

View File

@ -1111,9 +1111,6 @@ int tsg_read(rdpTsg* tsg, BYTE* data, UINT32 length)
{
CopyLength = (length < tsg->BytesAvailable) ? length : tsg->BytesAvailable;
//printf("Reading from the same PDU: copy: %d length: %d avail: %d\n",
// CopyLength, length, tsg->BytesAvailable);
CopyMemory(data, &tsg->pdu->Buffer[tsg->BytesRead], CopyLength);
tsg->BytesAvailable -= CopyLength;
tsg->BytesRead += CopyLength;
@ -1133,7 +1130,7 @@ int tsg_read(rdpTsg* tsg, BYTE* data, UINT32 length)
if ((tsg->pdu->Flags & RPC_PDU_FLAG_STUB) && (tsg->pdu->Length == 4))
{
printf("Ignoring TsProxySetupReceivePipe Response\n");
return tsg_read(tsg, data, length);
return 0;
}
tsg->PendingPdu = TRUE;
@ -1142,9 +1139,6 @@ int tsg_read(rdpTsg* tsg, BYTE* data, UINT32 length)
CopyLength = (length < tsg->BytesAvailable) ? length : tsg->BytesAvailable;
//printf("Reading new PDU: copy: %d length: %d avail: %d\n",
// CopyLength, length, tsg->BytesAvailable);
CopyMemory(data, &tsg->pdu->Buffer[tsg->BytesRead], CopyLength);
tsg->BytesAvailable -= CopyLength;
tsg->BytesRead += CopyLength;