FreeRDP/FreeRDP — pull request #2086 by llyzs (2014-09-11 06:16:20+00:00)
Title: transport: exit transport loop when the session is activated.

Previously, the transport_check_fds() looped until all pending PDUs had been received. In case after the session was activated and some important virtual channel PDUs (such as the DRDYNVC server-to-client capability request PDU) immediately followed, the client did not have the chance the call PostConnect (and thus the channel plugins were not initialized), causing those virtual channel PDUs be discarded and DRDYNVC not initialized. This was a race condition and did not always reproducible.

This simple change quits the transport_check_fds() loop whenever the client state is transit into active to give the client a chance to immediately call PostConnect before processing any further PDUs.