Merge pull request #2483 from akallabeth/feat/freerdp_set_last_error_name
Feat/freerdp last error name
This commit is contained in:
commit
aa2181dcf2
@ -194,6 +194,17 @@ FREERDP_API extern int connectErrorCode;
|
|||||||
|
|
||||||
#define FREERDP_ERROR_BASE 0
|
#define FREERDP_ERROR_BASE 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error Base Codes
|
||||||
|
*/
|
||||||
|
#define FREERDP_ERROR_ERRBASE_CLASS (FREERDP_ERROR_BASE + 0)
|
||||||
|
|
||||||
|
#define ERRBASE_SUCCESS ERRINFO_SUCCESS
|
||||||
|
#define ERRBASE_NONE ERRINFO_NONE
|
||||||
|
|
||||||
|
FREERDP_API const char* freerdp_get_error_base_string(UINT32 code);
|
||||||
|
FREERDP_API const char* freerdp_get_error_base_name(UINT32 code);
|
||||||
|
|
||||||
#define FREERDP_ERROR_SUCCESS ERRINFO_SUCCESS
|
#define FREERDP_ERROR_SUCCESS ERRINFO_SUCCESS
|
||||||
#define FREERDP_ERROR_NONE ERRINFO_NONE
|
#define FREERDP_ERROR_NONE ERRINFO_NONE
|
||||||
|
|
||||||
@ -214,22 +225,66 @@ FREERDP_API extern int connectErrorCode;
|
|||||||
#define FREERDP_ERROR_LOGOFF_BY_USER MAKE_FREERDP_ERROR(ERRINFO, ERRINFO_LOGOFF_BY_USER)
|
#define FREERDP_ERROR_LOGOFF_BY_USER MAKE_FREERDP_ERROR(ERRINFO, ERRINFO_LOGOFF_BY_USER)
|
||||||
|
|
||||||
/* Connection Error Codes */
|
/* Connection Error Codes */
|
||||||
|
#define ERRCONNECT_PRE_CONNECT_FAILED 0x00000001
|
||||||
|
#define ERRCONNECT_CONNECT_UNDEFINED 0x00000002
|
||||||
|
#define ERRCONNECT_POST_CONNECT_FAILED 0x00000003
|
||||||
|
#define ERRCONNECT_DNS_ERROR 0x00000004
|
||||||
|
#define ERRCONNECT_DNS_NAME_NOT_FOUND 0x00000005
|
||||||
|
#define ERRCONNECT_CONNECT_FAILED 0x00000006
|
||||||
|
#define ERRCONNECT_MCS_CONNECT_INITIAL_ERROR 0x00000007
|
||||||
|
#define ERRCONNECT_TLS_CONNECT_FAILED 0x00000008
|
||||||
|
#define ERRCONNECT_AUTHENTICATION_FAILED 0x00000009
|
||||||
|
#define ERRCONNECT_INSUFFICIENT_PRIVILEGES 0x0000000A
|
||||||
|
#define ERRCONNECT_CONNECT_CANCELLED 0x0000000B
|
||||||
|
#define ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED 0x0000000C
|
||||||
|
#define ERRCONNECT_CONNECT_TRANSPORT_FAILED 0x0000000D
|
||||||
|
|
||||||
|
#define ERRCONNECT_SUCCESS ERRINFO_SUCCESS
|
||||||
|
#define ERRCONNECT_NONE ERRINFO_NONE
|
||||||
|
|
||||||
|
FREERDP_API const char* freerdp_get_error_connect_string(UINT32 code);
|
||||||
|
FREERDP_API const char* freerdp_get_error_connect_name(UINT32 code);
|
||||||
|
|
||||||
#define FREERDP_ERROR_CONNECT_CLASS (FREERDP_ERROR_BASE + 2)
|
#define FREERDP_ERROR_CONNECT_CLASS (FREERDP_ERROR_BASE + 2)
|
||||||
|
|
||||||
#define FREERDP_ERROR_PRE_CONNECT_FAILED MAKE_FREERDP_ERROR(CONNECT, 1)
|
#define FREERDP_ERROR_PRE_CONNECT_FAILED \
|
||||||
#define FREERDP_ERROR_CONNECT_UNDEFINED MAKE_FREERDP_ERROR(CONNECT, 2)
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PRE_CONNECT_FAILED)
|
||||||
#define FREERDP_ERROR_POST_CONNECT_FAILED MAKE_FREERDP_ERROR(CONNECT, 3)
|
|
||||||
#define FREERDP_ERROR_DNS_ERROR MAKE_FREERDP_ERROR(CONNECT, 4)
|
#define FREERDP_ERROR_CONNECT_UNDEFINED \
|
||||||
#define FREERDP_ERROR_DNS_NAME_NOT_FOUND MAKE_FREERDP_ERROR(CONNECT, 5)
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_UNDEFINED)
|
||||||
#define FREERDP_ERROR_CONNECT_FAILED MAKE_FREERDP_ERROR(CONNECT, 6)
|
|
||||||
#define FREERDP_ERROR_MCS_CONNECT_INITIAL_ERROR MAKE_FREERDP_ERROR(CONNECT, 7)
|
#define FREERDP_ERROR_POST_CONNECT_FAILED \
|
||||||
#define FREERDP_ERROR_TLS_CONNECT_FAILED MAKE_FREERDP_ERROR(CONNECT, 8)
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_POST_CONNECT_FAILED)
|
||||||
#define FREERDP_ERROR_AUTHENTICATION_FAILED MAKE_FREERDP_ERROR(CONNECT, 9)
|
|
||||||
#define FREERDP_ERROR_INSUFFICIENT_PRIVILEGES MAKE_FREERDP_ERROR(CONNECT, 10)
|
#define FREERDP_ERROR_DNS_ERROR \
|
||||||
#define FREERDP_ERROR_CONNECT_CANCELLED MAKE_FREERDP_ERROR(CONNECT, 11)
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_DNS_ERROR)
|
||||||
#define FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED MAKE_FREERDP_ERROR(CONNECT, 12)
|
|
||||||
#define FREERDP_ERROR_CONNECT_TRANSPORT_FAILED MAKE_FREERDP_ERROR(CONNECT, 13)
|
#define FREERDP_ERROR_DNS_NAME_NOT_FOUND \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_DNS_NAME_NOT_FOUND)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_CONNECT_FAILED \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_FAILED)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_MCS_CONNECT_INITIAL_ERROR \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_MCS_CONNECT_INITIAL_ERROR)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_TLS_CONNECT_FAILED \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_TLS_CONNECT_FAILED)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_AUTHENTICATION_FAILED \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_AUTHENTICATION_FAILED)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_INSUFFICIENT_PRIVILEGES \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_INSUFFICIENT_PRIVILEGES)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_CONNECT_CANCELLED \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_CANCELLED)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED)
|
||||||
|
|
||||||
|
#define FREERDP_ERROR_CONNECT_TRANSPORT_FAILED \
|
||||||
|
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_TRANSPORT_FAILED)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -268,6 +268,8 @@ FREERDP_API BOOL freerdp_focus_required(freerdp* instance);
|
|||||||
FREERDP_API void freerdp_set_focus(freerdp* instance);
|
FREERDP_API void freerdp_set_focus(freerdp* instance);
|
||||||
|
|
||||||
FREERDP_API UINT32 freerdp_get_last_error(rdpContext* context);
|
FREERDP_API UINT32 freerdp_get_last_error(rdpContext* context);
|
||||||
|
FREERDP_API const char* freerdp_get_last_error_name(UINT32 error);
|
||||||
|
FREERDP_API const char* freerdp_get_last_error_string(UINT32 error);
|
||||||
FREERDP_API void freerdp_set_last_error(rdpContext* context, UINT32 lastError);
|
FREERDP_API void freerdp_set_last_error(rdpContext* context, UINT32 lastError);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -69,6 +69,8 @@ set(${MODULE_PREFIX}_SRCS
|
|||||||
license.c
|
license.c
|
||||||
license.h
|
license.h
|
||||||
errinfo.c
|
errinfo.c
|
||||||
|
errbase.c
|
||||||
|
errconnect.c
|
||||||
errinfo.h
|
errinfo.h
|
||||||
security.c
|
security.c
|
||||||
security.h
|
security.h
|
||||||
|
85
libfreerdp/core/errbase.c
Normal file
85
libfreerdp/core/errbase.c
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/**
|
||||||
|
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||||
|
* Error Base
|
||||||
|
*
|
||||||
|
* Copyright 2015 Armin Novak <armin.novak@thincast.com>
|
||||||
|
* Copyright 2015 Thincast Technologies GmbH
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <freerdp/log.h>
|
||||||
|
|
||||||
|
#include "errinfo.h"
|
||||||
|
|
||||||
|
#define TAG FREERDP_TAG("core")
|
||||||
|
|
||||||
|
#define ERRBASE_DEFINE(_code) { ERRBASE_##_code , "ERRBASE_" #_code , ERRBASE_##_code##_STRING }
|
||||||
|
|
||||||
|
/* Protocol-independent codes */
|
||||||
|
|
||||||
|
/* Special codes */
|
||||||
|
#define ERRBASE_SUCCESS_STRING "Success."
|
||||||
|
#define ERRBASE_NONE_STRING ""
|
||||||
|
|
||||||
|
static const ERRINFO ERRBASE_CODES[] =
|
||||||
|
{
|
||||||
|
ERRBASE_DEFINE(SUCCESS),
|
||||||
|
|
||||||
|
ERRBASE_DEFINE(NONE)
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* freerdp_get_error_base_string(UINT32 code)
|
||||||
|
{
|
||||||
|
const ERRINFO* errInfo;
|
||||||
|
|
||||||
|
errInfo = &ERRBASE_CODES[0];
|
||||||
|
|
||||||
|
while (errInfo->code != ERRBASE_NONE)
|
||||||
|
{
|
||||||
|
if (code == errInfo->code)
|
||||||
|
{
|
||||||
|
return errInfo->info;
|
||||||
|
}
|
||||||
|
|
||||||
|
errInfo++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "ERRBASE_UNKNOWN";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* freerdp_get_error_base_name(UINT32 code)
|
||||||
|
{
|
||||||
|
const ERRINFO* errInfo;
|
||||||
|
|
||||||
|
errInfo = &ERRBASE_CODES[0];
|
||||||
|
|
||||||
|
while (errInfo->code != ERRBASE_NONE)
|
||||||
|
{
|
||||||
|
if (code == errInfo->code)
|
||||||
|
{
|
||||||
|
return errInfo->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
errInfo++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "ERRBASE_UNKNOWN";
|
||||||
|
}
|
||||||
|
|
138
libfreerdp/core/errconnect.c
Normal file
138
libfreerdp/core/errconnect.c
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
/**
|
||||||
|
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||||
|
* Error Connect
|
||||||
|
*
|
||||||
|
* Copyright 2015 Armin Novak <armin.novak@thincast.com>
|
||||||
|
* Copyright 2015 Thincast Technologies GmbH
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <freerdp/log.h>
|
||||||
|
|
||||||
|
#include "errinfo.h"
|
||||||
|
|
||||||
|
#define TAG FREERDP_TAG("core")
|
||||||
|
|
||||||
|
#define ERRCONNECT_DEFINE(_code) { ERRCONNECT_##_code , "ERRCONNECT_" #_code , ERRCONNECT_##_code##_STRING }
|
||||||
|
|
||||||
|
/* Protocol-independent codes */
|
||||||
|
|
||||||
|
#define ERRCONNECT_PRE_CONNECT_FAILED_STRING \
|
||||||
|
"A configuration error prevented a connection to be established."
|
||||||
|
|
||||||
|
#define ERRCONNECT_CONNECT_UNDEFINED_STRING \
|
||||||
|
"A undefined connection error occured."
|
||||||
|
|
||||||
|
#define ERRCONNECT_POST_CONNECT_FAILED_STRING \
|
||||||
|
"The connection attempt was aborted due to post connect configuration errors."
|
||||||
|
|
||||||
|
#define ERRCONNECT_DNS_ERROR_STRING \
|
||||||
|
"The DNS entry could not be resolved."
|
||||||
|
|
||||||
|
#define ERRCONNECT_DNS_NAME_NOT_FOUND_STRING \
|
||||||
|
"The DNS host name was not found."
|
||||||
|
|
||||||
|
#define ERRCONNECT_CONNECT_FAILED_STRING \
|
||||||
|
"The connection failed."
|
||||||
|
|
||||||
|
#define ERRCONNECT_MCS_CONNECT_INITIAL_ERROR_STRING \
|
||||||
|
"The connection failed at initial MCS connect"
|
||||||
|
|
||||||
|
#define ERRCONNECT_TLS_CONNECT_FAILED_STRING \
|
||||||
|
"The connection failed at TLS connect."
|
||||||
|
|
||||||
|
#define ERRCONNECT_AUTHENTICATION_FAILED_STRING \
|
||||||
|
"An authentication failure aborted the connection."
|
||||||
|
|
||||||
|
#define ERRCONNECT_INSUFFICIENT_PRIVILEGES_STRING \
|
||||||
|
"Insufficient privileges to establish a connection."
|
||||||
|
|
||||||
|
#define ERRCONNECT_CONNECT_CANCELLED_STRING \
|
||||||
|
"The connection was cancelled."
|
||||||
|
|
||||||
|
#define ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED_STRING \
|
||||||
|
"The connection failed at negociating security settings."
|
||||||
|
|
||||||
|
#define ERRCONNECT_CONNECT_TRANSPORT_FAILED_STRING \
|
||||||
|
"The connection transport layer failed."
|
||||||
|
|
||||||
|
/* Special codes */
|
||||||
|
#define ERRCONNECT_SUCCESS_STRING "Success."
|
||||||
|
#define ERRCONNECT_NONE_STRING ""
|
||||||
|
|
||||||
|
static const ERRINFO ERRCONNECT_CODES[] =
|
||||||
|
{
|
||||||
|
ERRCONNECT_DEFINE(SUCCESS),
|
||||||
|
|
||||||
|
ERRCONNECT_DEFINE(PRE_CONNECT_FAILED),
|
||||||
|
ERRCONNECT_DEFINE(CONNECT_UNDEFINED),
|
||||||
|
ERRCONNECT_DEFINE(POST_CONNECT_FAILED),
|
||||||
|
ERRCONNECT_DEFINE(DNS_ERROR),
|
||||||
|
ERRCONNECT_DEFINE(DNS_NAME_NOT_FOUND),
|
||||||
|
ERRCONNECT_DEFINE(CONNECT_FAILED),
|
||||||
|
ERRCONNECT_DEFINE(MCS_CONNECT_INITIAL_ERROR),
|
||||||
|
ERRCONNECT_DEFINE(TLS_CONNECT_FAILED),
|
||||||
|
ERRCONNECT_DEFINE(AUTHENTICATION_FAILED),
|
||||||
|
ERRCONNECT_DEFINE(INSUFFICIENT_PRIVILEGES),
|
||||||
|
ERRCONNECT_DEFINE(CONNECT_CANCELLED),
|
||||||
|
ERRCONNECT_DEFINE(SECURITY_NEGO_CONNECT_FAILED),
|
||||||
|
ERRCONNECT_DEFINE(CONNECT_TRANSPORT_FAILED),
|
||||||
|
|
||||||
|
ERRCONNECT_DEFINE(NONE)
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* freerdp_get_error_connect_string(UINT32 code)
|
||||||
|
{
|
||||||
|
const ERRINFO* errInfo;
|
||||||
|
|
||||||
|
errInfo = &ERRCONNECT_CODES[0];
|
||||||
|
|
||||||
|
while (errInfo->code != ERRCONNECT_NONE)
|
||||||
|
{
|
||||||
|
if (code == errInfo->code)
|
||||||
|
{
|
||||||
|
return errInfo->info;
|
||||||
|
}
|
||||||
|
|
||||||
|
errInfo++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "ERRCONNECT_UNKNOWN";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* freerdp_get_error_connect_name(UINT32 code)
|
||||||
|
{
|
||||||
|
const ERRINFO* errInfo;
|
||||||
|
|
||||||
|
errInfo = &ERRCONNECT_CODES[0];
|
||||||
|
|
||||||
|
while (errInfo->code != ERRCONNECT_NONE)
|
||||||
|
{
|
||||||
|
if (code == errInfo->code)
|
||||||
|
{
|
||||||
|
return errInfo->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
errInfo++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "ERRCONNECT_UNKNOWN";
|
||||||
|
}
|
||||||
|
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
#define TAG FREERDP_TAG("core")
|
#define TAG FREERDP_TAG("core")
|
||||||
|
|
||||||
|
#define ERRINFO_DEFINE(_code) { ERRINFO_##_code , "ERRINFO_" #_code , ERRINFO_##_code##_STRING }
|
||||||
|
|
||||||
int connectErrorCode;
|
int connectErrorCode;
|
||||||
|
|
||||||
/* Protocol-independent codes */
|
/* Protocol-independent codes */
|
||||||
|
@ -30,8 +30,6 @@ struct _ERRINFO
|
|||||||
};
|
};
|
||||||
typedef struct _ERRINFO ERRINFO;
|
typedef struct _ERRINFO ERRINFO;
|
||||||
|
|
||||||
#define ERRINFO_DEFINE(_code) { ERRINFO_##_code , "ERRINFO_" #_code , ERRINFO_##_code##_STRING }
|
|
||||||
|
|
||||||
void rdp_print_errinfo(UINT32 code);
|
void rdp_print_errinfo(UINT32 code);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -511,10 +511,61 @@ UINT32 freerdp_get_last_error(rdpContext* context)
|
|||||||
return context->LastError;
|
return context->LastError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* freerdp_get_last_error_name(UINT32 code)
|
||||||
|
{
|
||||||
|
const char *name = NULL;
|
||||||
|
const UINT32 cls = GET_FREERDP_ERROR_CLASS(code);
|
||||||
|
const UINT32 type = GET_FREERDP_ERROR_TYPE(code);
|
||||||
|
|
||||||
|
switch(cls)
|
||||||
|
{
|
||||||
|
case FREERDP_ERROR_ERRBASE_CLASS:
|
||||||
|
name = freerdp_get_error_base_name(type);
|
||||||
|
break;
|
||||||
|
case FREERDP_ERROR_ERRINFO_CLASS:
|
||||||
|
name = freerdp_get_error_info_name(type);
|
||||||
|
break;
|
||||||
|
case FREERDP_ERROR_CONNECT_CLASS:
|
||||||
|
name = freerdp_get_error_connect_name(type);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
name = "Unknown error class";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* freerdp_get_last_error_string(UINT32 code)
|
||||||
|
{
|
||||||
|
const char* string = NULL;
|
||||||
|
const UINT32 cls = GET_FREERDP_ERROR_CLASS(code);
|
||||||
|
const UINT32 type = GET_FREERDP_ERROR_TYPE(code);
|
||||||
|
|
||||||
|
switch(cls)
|
||||||
|
{
|
||||||
|
case FREERDP_ERROR_ERRBASE_CLASS:
|
||||||
|
string = freerdp_get_error_base_string(type);
|
||||||
|
break;
|
||||||
|
case FREERDP_ERROR_ERRINFO_CLASS:
|
||||||
|
string = freerdp_get_error_info_string(type);
|
||||||
|
break;
|
||||||
|
case FREERDP_ERROR_CONNECT_CLASS:
|
||||||
|
string = freerdp_get_error_connect_string(type);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
string = "Unknown error class";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
void freerdp_set_last_error(rdpContext* context, UINT32 lastError)
|
void freerdp_set_last_error(rdpContext* context, UINT32 lastError)
|
||||||
{
|
{
|
||||||
if (lastError)
|
if (lastError)
|
||||||
WLog_ERR(TAG, "freerdp_set_last_error 0x%04X", lastError);
|
WLog_ERR(TAG, "freerdp_set_last_error %s [0x%04X]",
|
||||||
|
freerdp_get_last_error_name(lastError), lastError);
|
||||||
|
|
||||||
context->LastError = lastError;
|
context->LastError = lastError;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user