return TRUE;
}
-static BOOL rdp_client_reconnect_channels(rdpRdp* rdp)
+static BOOL rdp_client_reconnect_channels(rdpRdp* rdp, BOOL redirect)
{
BOOL status;
rdpContext* context;
if (context->instance->ConnectionCallbackState == CLIENT_STATE_PRECONNECT_PASSED)
{
+ if (redirect)
+ return TRUE;
+
if (!IFCALLRESULT(FALSE, context->instance->PostConnect, context->instance))
return FALSE;
status = rdp_client_connect(rdp);
if (status)
- status = rdp_client_reconnect_channels(rdp);
+ status = rdp_client_reconnect_channels(rdp, TRUE);
return status;
}
status = rdp_client_connect(rdp);
if (status)
- status = rdp_client_reconnect_channels(rdp);
+ status = rdp_client_reconnect_channels(rdp, FALSE);
return status;
}
{
if (freerdp_get_last_error(instance->context) == FREERDP_ERROR_CONNECT_TRANSPORT_FAILED)
status = freerdp_reconnect(instance);
+ else
+ goto freerdp_connect_finally;
}
if (!status || (status2 != CHANNEL_RC_OK)