63afb676e6
The dynamic channel handler in xrdp_channel.c is updated to allow the procs `data_first` pointer to be NULL. If this is done, the channel handler performs all the dechunking necessary for the channel, and only complete data PDUs are passed to procs 'data' callback. This facility is applied to the dynamic channels supported by xrdp_mm.c. The incoming callbacks for these channels now provide complete support for the specification in [MS-RDPEDYC]. The existing channels were incomplete in these respects: 1) The "Microsoft::Windows::RDS::Graphics" channel handler did not support incoming PDUs between 1591 and 1600 bytes. The specification calls for these to be sent as a single DATA_FIRST PDU. 2) The "Microsoft::Windows::RDS::DisplayControl" channel handler did not support incoming PDUs over 1590 bytes.