diff --git a/client/X11/xf_client.c b/client/X11/xf_client.c index ebf0e42cd..a97a9ec6f 100644 --- a/client/X11/xf_client.c +++ b/client/X11/xf_client.c @@ -1526,8 +1526,10 @@ static DWORD WINAPI xf_client_thread(LPVOID param) * Indicate an unsuccessful connection attempt if reconnect * did not succeed and no other error was specified. */ + const UINT32 error = freerdp_get_last_error(instance->context); + if (freerdp_error_info(instance) == 0) - exit_code = XF_EXIT_CONN_FAILED; + exit_code = xf_map_error_to_exit_code(error); } if (freerdp_get_last_error(context) == FREERDP_ERROR_SUCCESS) diff --git a/client/common/client.c b/client/common/client.c index 0e07a21a5..3a6534f95 100644 --- a/client/common/client.c +++ b/client/common/client.c @@ -1034,11 +1034,18 @@ BOOL client_auto_reconnect_ex(freerdp* instance, BOOL (*window_events)(freerdp* return FALSE; } + switch (freerdp_get_last_error(instance->context)) + { + case FREERDP_ERROR_CONNECT_CANCELLED: + WLog_WARN(TAG, "Connection aborted by user"); + return FALSE; + default: + break; + } + /* Perform an auto-reconnect. */ while (retry) { - UINT32 x; - /* Quit retrying if max retries has been exceeded */ if ((maxRetries > 0) && (numRetries++ >= maxRetries)) { @@ -1055,12 +1062,11 @@ BOOL client_auto_reconnect_ex(freerdp* instance, BOOL (*window_events)(freerdp* { case FREERDP_ERROR_CONNECT_CANCELLED: WLog_WARN(TAG, "Autoreconnect aborted by user"); - retry = FALSE; - break; + return FALSE; default: break; } - for (x = 0; x < 50; x++) + for (UINT32 x = 0; x < 50; x++) { if (!IFCALLRESULT(TRUE, window_events, instance)) return FALSE;