FreeRDP/libfreerdp
Norbert Federa 4c4019203a core/fastpath: removed flawed slow-path conversion
Commit 0357a38e31 modified the function
fastpath_send_update_pdu() to check if the desired update is possible
by checking the payload size against the computed maxLength and the
clients's advertised max request size.
If the check failed that commit added a workaround which simply
copied the payload to a slow path updade.
This workaround is totally flawed and causes protocol errors:
- the fast path update code is not checked and required data format
  conversions are missing
- depending on the fast path update code rdp_send_data_pdu() would
  have to be called with differend data pdu type values but the
  workaround always uses DATA_PDU_TYPE_UPDATE
- the workaround does not check if the total size would exceed
  the maximum possible size for a slow path update

The check if a fast path output is actually possible with the
passed parameters is basically a good idea.
However, if that check fails it would only indicate an error in
the server implementation who must not generate updates that
exceed the client's max request size.
Even though a slow-path conversion would be possible there is
much more involved than simply copying the payload stream.
In addition it is highly doubtful if there is a benefit at all.
Even the oldest rdesktop and windows ce clients do support fast
path and although some lack the multi-fragment update capability
we cannot really send larger updates using slow-path outputs.

For the reasons elucidated above, I have removed the workaround
but kept a modified version of the check if a fast-path output
is possible at all.
2015-02-03 13:51:35 +01:00
..
cache gfx/pointer: add support to set pointer 2015-02-02 10:57:31 +01:00
codec Added destination buffer width to h264_decompress. 2015-01-22 13:22:53 +01:00
common Standard RDP Security Layer Levels/Method Overhaul 2014-12-12 02:17:12 +01:00
core core/fastpath: removed flawed slow-path conversion 2015-02-03 13:51:35 +01:00
crypto libfreerdp-crypto: fix tls_write_all ringbuffer usage 2015-01-14 13:25:54 -05:00
gdi Updated h264_decompress arguments. 2015-01-22 13:24:15 +01:00
locale libfreerdp-utils: remove old time utils 2014-11-12 13:45:03 -05:00
primitives Merge branch 'master' of github.com:awakecoding/FreeRDP into egfx 2014-09-17 19:09:56 -04:00
utils Fix clang compiler warnings 2015-01-16 00:41:57 +01:00
CMakeLists.txt libfreerdp-rail: remove 2014-11-12 19:51:17 -05:00