From: Marc-André Moreau Date: Thu, 17 Jul 2014 21:33:33 +0000 (-0400) Subject: Merge branch 'master' of github.com:awakecoding/FreeRDP into shadow X-Git-Tag: 1.2.0-beta1+android9~18^2~1^2~24 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5d4f28a7882559d418b2d2803e0343e94013b764;p=platform%2Fupstream%2Ffreerdp.git Merge branch 'master' of github.com:awakecoding/FreeRDP into shadow --- 5d4f28a7882559d418b2d2803e0343e94013b764 diff --cc channels/encomsp/server/encomsp_main.c index 4e826cb,5f2ef2c..3ff7dc3 --- a/channels/encomsp/server/encomsp_main.c +++ b/channels/encomsp/server/encomsp_main.c @@@ -173,28 -72,19 +173,27 @@@ static void* encomsp_server_thread(void break; } - if (WTSVirtualChannelRead(context->priv->ChannelHandle, 0, - (PCHAR) Stream_Buffer(s), Stream_Capacity(s), &BytesReturned)) + WTSVirtualChannelRead(context->priv->ChannelHandle, 0, NULL, 0, &BytesReturned); + if (BytesReturned < 1) + continue; + Stream_EnsureRemainingCapacity(s, BytesReturned); + if (!WTSVirtualChannelRead(context->priv->ChannelHandle, 0, + (PCHAR) Stream_Buffer(s), Stream_Capacity(s), &BytesReturned)) { - if (BytesReturned) - Stream_Seek(s, BytesReturned); - } - else - { - Stream_EnsureRemainingCapacity(s, BytesReturned); + break; } - if (0) + if (Stream_GetPosition(s) >= ENCOMSP_ORDER_HEADER_SIZE) { - encomsp_server_receive_pdu(context, s); + header = (ENCOMSP_ORDER_HEADER*) Stream_Buffer(s); + + if (header->Length >= Stream_GetPosition(s)) + { + Stream_SealLength(s); + Stream_SetPosition(s, 0); + encomsp_server_receive_pdu(context, s); + Stream_SetPosition(s, 0); + } } }