Currently, FreeRDP-based server implementations can do connect-time autodetection. However, without having any control over it. In order to be able to override the default connect-time autodetection handling, introduce three new states for the state machine of the connection sequence and two new callbacks for the autodetect handling. These are: - CONNECTION_STATE_CONNECT_TIME_AUTO_DETECT_BEGIN - CONNECTION_STATE_CONNECT_TIME_AUTO_DETECT_IN_PROGRESS - CONNECTION_STATE_CONNECT_TIME_AUTO_DETECT_END - OnConnectTimeAutoDetectBegin() - OnConnectTimeAutoDetectProgress() The END state is pretty simple: When the autodetection is finished and the autodetect state is FREERDP_AUTODETECT_STATE_COMPLETE, transition into the next state of the connection sequence. The BEGIN state is entered, when capability-wise network autodetection is available. In this state, the OnConnectTimeAutoDetectBegin callback is called, the server implementation may initialize any related handling here. If the server implementation determines, that no further handling is required, it can end the autodetection phase by returning FREERDP_AUTODETECT_STATE_COMPLETE. If not, and an autodetection request is sent, it returns FREERDP_AUTODETECT_STATE_REQUEST. The state machine of the connection sequence will then switch into the IN_PROGRESS state. In the IN_PROGRESS state, any incoming PDU is handled first, then the OnConnectTimeAutoDetectProgress callback is called. Like in the BEGIN state, the return value will determine, whether the state machine of the connection sequence goes into the END state or goes into (or rather stays) in the IN_PROGRESS state.
FreeRDP: A Remote Desktop Protocol Implementation
FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.
Resources
Project website: https://www.freerdp.com/
Issue tracker: https://github.com/FreeRDP/FreeRDP/issues
Sources: https://github.com/FreeRDP/FreeRDP/
Downloads: https://pub.freerdp.com/releases/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
API documentation: https://pub.freerdp.com/api/
Security policy: https://github.com/FreeRDP/FreeRDP/security/policy
Matrix room : #FreeRDP:matrix.org (main) XMPP channel: #FreeRDP#matrix.org@matrix.org (bridged) IRC channel : #freerdp @ irc.oftc.net (bridged) Mailing list: https://lists.sourceforge.net/lists/listinfo/freerdp-devel
Microsoft Open Specifications
Information regarding the Microsoft Open Specifications can be found at: https://www.microsoft.com/openspecifications/
A list of reference documentation is maintained here: https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation
Compilation
Instructions on how to get started compiling FreeRDP can be found on the wiki: https://github.com/FreeRDP/FreeRDP/wiki/Compilation