Normally, a heartbeat is done every 15 seconds by getting the server time, and starts as soon as connection to host is established, but if an error occurs XC retries once more in another 15 seconds before actually closing the connection to the host.
Now, if a 407 Proxy Authentication Required error occurs on the initial heartbeat then XC does not retry again in 15 seconds; it will close the connection immediately. The disconnection was instant to up to 2 seconds, depending on time taken to get server time (testing with FreeProxy was ~instant and CCProxy was ~2 seconds). This is only a work-around, as the exact reason for this behaviour is still unknown.
Signed-off-by: Frezzle <frederico.mazzone@citrix.com>
The Heartbeat would log out the session after the first missed heartbeat.
This worked fine when the Heartbeat was on its own session, back in George
and earlier versions. However, when it was changed to use just a
DuplicateSession() instead of a new Session(), this broke the main session
of the connection. This caused a first heartbeat failure to break the
connection, and also caused the expectDisruption flag to be ignored.
This patch restores the old behaviour by not logging out the session until
the second failure.