diff --git a/client/Mac/MRDPView.m b/client/Mac/MRDPView.m index 66b13a9d6..fda9a8dcc 100644 --- a/client/Mac/MRDPView.m +++ b/client/Mac/MRDPView.m @@ -152,7 +152,7 @@ DWORD mac_client_update_thread(void* param) } ExitThread(0); - return NULL; + return 0; } DWORD mac_client_input_thread(void* param) @@ -177,7 +177,7 @@ DWORD mac_client_input_thread(void* param) } ExitThread(0); - return NULL; + return 0; } DWORD mac_client_channels_thread(void* param) @@ -214,7 +214,7 @@ DWORD mac_client_channels_thread(void* param) } ExitThread(0); - return NULL; + return 0; } DWORD mac_client_thread(void* param) diff --git a/include/freerdp/error.h b/include/freerdp/error.h index 9cd8f4daa..248b38e19 100755 --- a/include/freerdp/error.h +++ b/include/freerdp/error.h @@ -177,7 +177,6 @@ FREERDP_API extern int connectErrorCode; #define CANCELEDBYUSER ERRORSTART + 11 - /** * FreeRDP Context Error Codes */ @@ -229,6 +228,8 @@ FREERDP_API extern int connectErrorCode; #define FREERDP_ERROR_AUTHENTICATION_FAILED MAKE_FREERDP_ERROR(CONNECT, 9) #define FREERDP_ERROR_INSUFFICIENT_PRIVILEGES MAKE_FREERDP_ERROR(CONNECT, 10) #define FREERDP_ERROR_CONNECT_CANCELLED MAKE_FREERDP_ERROR(CONNECT, 11) +#define FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED MAKE_FREERDP_ERROR(CONNECT, 12) +#define FREERDP_ERROR_CONNECT_TRANSPORT_FAILED MAKE_FREERDP_ERROR(CONNECT, 13) #ifdef __cplusplus } diff --git a/libfreerdp/core/connection.c b/libfreerdp/core/connection.c index dc991d08f..89415794a 100644 --- a/libfreerdp/core/connection.c +++ b/libfreerdp/core/connection.c @@ -246,6 +246,11 @@ BOOL rdp_client_connect(rdpRdp* rdp) if (!nego_connect(rdp->nego)) { + if (!freerdp_get_last_error(rdp->context)) + { + freerdp_set_last_error(rdp->context, FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED); + } + fprintf(stderr, "Error: protocol security negotiation or connection failure\n"); return FALSE; } @@ -281,7 +286,14 @@ BOOL rdp_client_connect(rdpRdp* rdp) while (rdp->state != CONNECTION_STATE_ACTIVE) { if (rdp_check_fds(rdp) < 0) + { + if (!freerdp_get_last_error(rdp->context)) + { + freerdp_set_last_error(rdp->context, FREERDP_ERROR_CONNECT_TRANSPORT_FAILED); + } + return FALSE; + } } return TRUE;