91ff145ae8
The current state of the autodetect API for the server side does not include all allowed scenarios where the network autodetection can be used. This for example includes the connect-time autodetection, as the related calls are hidden inside FreeRDP, and not exposed as public API. In order to avoid duplicate send methods, check the state of the connection sequence. If the connection sequence is not yet done, use the connect-time request types. Otherwise, use the continuous request types. The Bandwidth Measure Payload PDU is a little special case, as it is only allowed to be sent during the connection sequence. To ensure this, add an assertion in its sending method. Also fix the handling for the Network Characteristics Sync PDU: Previously, after parsing the PDU data, the read data was just sent again to the client, which is wrong. To fix this issue, introduce a callback for this client-to-server PDU, so that the actual server implementation can hook up its own handling for this PDU. Depending on the situation, the server side may want to discard or use the retrieved data here. Moreover, decouple the send-handling for the Network Characteristics Result PDU from the local autodetect variables. Currently, these variables are shared between the send and receive methods. This leads to access problems, where the server side, wants to use a different thread to send the autodetect PDU, as the receive handler may receive an autodetect PDU and overwrite these values with possible nonsense values. This is especially the case with RTT response PDUs, as the written netCharAverageRTT and netCharBaseRTT values are only correct, when only one RTTRequest happens at a time and no stray RTTResponses are received. |
||
---|---|---|
.. | ||
config | ||
freerdp | ||
CMakeLists.txt |