FreeRDP/channels/smartcard
Bernhard Miklautz 46a7538322 fix channel/smartcard: async request handling
The smart card channel tried to mimic mstsc's behavior on if an IRP was
processed synchronously or asynchronously. As the channel uses one thread per
context it could happen, especially with PCSC, that the main
channel thread was blocked waiting for an smart card operation to
complete. To prevent that behavior only call known safe functions in the
main thread (like CreateContext) and call the rest asynchronously.

For example the channel would block if a ListReaders is invoked on
the same context where a GetStatusChange (infinite timeout)
was already pending. Only when a status change happened the channel
would continue.

Note: Due to the one context per thread design it's important that
cancel isn't queued an alway run synchronously. Otherwise a specific
context might lock.
2017-12-13 17:04:06 +01:00
..
client fix channel/smartcard: async request handling 2017-12-13 17:04:06 +01:00
ChannelOptions.cmake channels/smartcard: refactoring 2014-04-03 17:29:12 -04:00
CMakeLists.txt channels: refactoring of channels cmake scripts with macros 2012-10-17 02:14:19 -04:00