void AppDelegate_ConnectionResultEventHandler(void *ctx, ConnectionResultEventArgs *e)
{
+ rdpContext *context = (rdpContext *)ctx;
NSLog(@"ConnectionResult event result:%d\n", e->result);
if (_singleDelegate)
if (e->result != 0)
{
NSString *message = nil;
-
- if (connectErrorCode == AUTHENTICATIONERROR)
+ DWORD code = freerdp_get_last_error(context);
+ switch (code)
{
- message = [NSString
- stringWithFormat:@"%@", @"Authentication failure, check credentials."];
+ case FREERDP_ERROR_AUTHENTICATION_FAILED:
+ message = [NSString
+ stringWithFormat:@"%@", @"Authentication failure, check credentials."];
+ break;
+ default:
+ break;
}
// Making sure this should be invoked on the main UI thread.
FREERDP_API const char* freerdp_get_error_info_category(UINT32 code);
/**
- * This static variable holds an error code if the return value from connect is FALSE.
- * This variable is always set to 0 in the beginning of the connect sequence.
- * The returned code can be used to inform the user of the detailed connect error.
- * The value can hold one of the defined error codes below OR an error according to errno
- */
-
- FREERDP_API extern int connectErrorCode;
-
-#define ERRORSTART 10000
-#define PREECONNECTERROR ERRORSTART + 1
-#define UNDEFINEDCONNECTERROR ERRORSTART + 2
-#define POSTCONNECTERROR ERRORSTART + 3
-#define DNSERROR ERRORSTART + 4 /* general DNS ERROR */
-#define DNSNAMENOTFOUND ERRORSTART + 5 /* EAI_NONAME */
-#define CONNECTERROR \
- ERRORSTART + 6 /* a connect error if errno is not define during tcp connect \
- */
-#define MCSCONNECTINITIALERROR ERRORSTART + 7
-#define TLSCONNECTERROR ERRORSTART + 8
-#define AUTHENTICATIONERROR ERRORSTART + 9
-#define INSUFFICIENTPRIVILEGESERROR ERRORSTART + 10
-#define CANCELEDBYUSER ERRORSTART + 11
-
- /**
* FreeRDP Context Error Codes
*/
#define TAG FREERDP_TAG("core")
-/* connectErrorCode is 'extern' in error.h. See comment there.*/
-
UINT freerdp_channel_add_init_handle_data(rdpChannelHandles* handles, void* pInitHandle,
void* pUserData)
{
/* We always set the return code to 0 before we start the connect sequence*/
instance->ConnectionCallbackState = CLIENT_STATE_INITIAL;
- connectErrorCode = 0;
freerdp_set_last_error_log(instance->context, FREERDP_ERROR_SUCCESS);
clearChannelError(instance->context);
ResetEvent(instance->context->abortEvent);
}
context->LastError = lastError;
-
- switch (lastError)
- {
- case FREERDP_ERROR_PRE_CONNECT_FAILED:
- connectErrorCode = PREECONNECTERROR;
- break;
-
- case FREERDP_ERROR_CONNECT_UNDEFINED:
- connectErrorCode = UNDEFINEDCONNECTERROR;
- break;
-
- case FREERDP_ERROR_POST_CONNECT_FAILED:
- connectErrorCode = POSTCONNECTERROR;
- break;
-
- case FREERDP_ERROR_DNS_ERROR:
- connectErrorCode = DNSERROR;
- break;
-
- case FREERDP_ERROR_DNS_NAME_NOT_FOUND:
- connectErrorCode = DNSNAMENOTFOUND;
- break;
-
- case FREERDP_ERROR_CONNECT_FAILED:
- connectErrorCode = CONNECTERROR;
- break;
-
- case FREERDP_ERROR_MCS_CONNECT_INITIAL_ERROR:
- connectErrorCode = MCSCONNECTINITIALERROR;
- break;
-
- case FREERDP_ERROR_TLS_CONNECT_FAILED:
- connectErrorCode = TLSCONNECTERROR;
- break;
-
- case FREERDP_ERROR_AUTHENTICATION_FAILED:
- connectErrorCode = AUTHENTICATIONERROR;
- break;
-
- case FREERDP_ERROR_INSUFFICIENT_PRIVILEGES:
- connectErrorCode = INSUFFICIENTPRIVILEGESERROR;
- break;
-
- case FREERDP_ERROR_CONNECT_CANCELLED:
- connectErrorCode = CANCELEDBYUSER;
- break;
-
- case FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED:
- connectErrorCode = CONNECTERROR;
- break;
-
- case FREERDP_ERROR_CONNECT_TRANSPORT_FAILED:
- connectErrorCode = CONNECTERROR;
- break;
- }
}
const char* freerdp_get_logon_error_info_type(UINT32 type)