fix vs2010 errors

This commit is contained in:
kubistika 2019-05-27 12:06:59 +03:00
parent 52e4baa949
commit 72952c679f
5 changed files with 45 additions and 32 deletions

View File

@ -29,7 +29,7 @@ static PF_FILTER_RESULT demo_filter_keyboard_event(connectionInfo* info, void* p
static PF_FILTER_RESULT demo_filter_mouse_event(connectionInfo* info, void* param)
{
proxyMouseEventInfo* event_data = (proxyMouseEventInfo*) param;
proxyMouseEventInfo* event_data = (proxyMouseEventInfo*) param;
if (event_data->x % 100 == 0)
{

View File

@ -35,6 +35,9 @@
wArrayList* parse_string_array_from_str(const char* str)
{
wArrayList* list = ArrayList_New(FALSE);
char* s;
char* temp;
char* token;
if (list == NULL)
{
@ -42,9 +45,13 @@ wArrayList* parse_string_array_from_str(const char* str)
return NULL;
}
char* s = _strdup(str);
char* temp = s;
char* token;
temp = s = _strdup(str);
if (!s)
{
WLog_ERR(TAG, "parse_string_array_from_str(): strdup failed!");
return NULL;
}
if (s == NULL)
{
@ -115,6 +122,7 @@ DWORD pf_server_load_config(const char* path, proxyConfig* config)
char** filters_names;
int rc;
int filters_count = 0;
UINT32 index;
DWORD result = CONFIG_PARSE_ERROR;
wIniFile* ini = IniFile_New();
@ -182,9 +190,9 @@ DWORD pf_server_load_config(const char* path, proxyConfig* config)
filters_names = IniFile_GetSectionKeyNames(ini, "Filters", &filters_count);
for (int i = 0; i < filters_count; i++)
for (index = 0; index < filters_count; index++)
{
char* filter_name = filters_names[i];
char* filter_name = filters_names[index];
const char* path = IniFile_GetKeyValueString(ini, "Filters", filter_name);
if (!pf_filters_register_new(config->Filters, path, filter_name))

View File

@ -122,7 +122,9 @@ PF_FILTER_RESULT pf_filters_run_by_type(filters_list* list, PF_FILTER_TYPE type,
static void pf_filters_filter_free(proxyFilter* filter)
{
assert(filter != NULL);
FreeLibrary(filter->handle);
if (filter->handle)
FreeLibrary(filter->handle);
free(filter->name);
free(filter->events);
free(filter);
@ -130,11 +132,13 @@ static void pf_filters_filter_free(proxyFilter* filter)
void pf_filters_unregister_all(filters_list* list)
{
size_t count;
size_t index;
if (list == NULL)
return;
const size_t count = (size_t) ArrayList_Count(list);
size_t index;
count = (size_t) ArrayList_Count(list);
for (index = 0; index < count; index++)
{
@ -159,7 +163,7 @@ BOOL pf_filters_register_new(filters_list* list, const char* module_path, const
if (handle == NULL)
{
WLog_ERR(TAG, "pf_filters_register_new(): failed loading external module: %s", module_path);
goto error;
return FALSE;
}
if (!(fn = (filterInitFn) GetProcAddress(handle, FILTER_INIT_METHOD)))
@ -207,7 +211,6 @@ error:
if (handle)
FreeLibrary(handle);
free(events);
free(filter);
pf_filters_filter_free(filter);
return FALSE;
}

View File

@ -57,19 +57,18 @@ PF_FILTER_RESULT pf_filters_run_by_type(filters_list* list, PF_FILTER_TYPE type,
void* param);
void pf_filters_unregister_all(filters_list* list);
#define RUN_FILTER(_filters,_type,_conn_info,_event_info,_cb,...) ({ \
({ BOOL result; switch(pf_filters_run_by_type(_filters,_type,_conn_info,_event_info)) { \
#define RUN_FILTER(_filters,_type,_conn_info,_event_info,_ret,_cb,...) do { \
switch(pf_filters_run_by_type(_filters,_type,_conn_info,_event_info)) { \
case FILTER_PASS: \
result = _cb(__VA_ARGS__); \
_ret = _cb(__VA_ARGS__); \
break; \
case FILTER_IGNORE: \
result = TRUE; \
_ret = TRUE; \
break; \
case FILTER_DROP: \
default: \
result = FALSE; \
}; result; \
}); \
})
_ret = FALSE; \
} \
} while(0)
#endif /* FREERDP_SERVER_PROXY_FILTERS_H */

View File

@ -32,21 +32,22 @@ static BOOL pf_server_synchronize_event(rdpInput* input, UINT32 flags)
static BOOL pf_server_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
{
BOOL result = FALSE;
pServerContext* ps = (pServerContext*)input->context;
pClientContext* pc = ps->pdata->pc;
rdpContext* context = (rdpContext*) pc;
proxyConfig* config = ps->pdata->config;
proxyKeyboardEventInfo event;
if (!config->Keyboard)
return TRUE;
proxyKeyboardEventInfo info =
{
.flags = flags,
.rdp_scan_code = code
};
return RUN_FILTER(config->Filters, FILTER_TYPE_KEYBOARD, ps->pdata->info, &info,
event.flags = flags;
event.rdp_scan_code = code;
RUN_FILTER(config->Filters, FILTER_TYPE_KEYBOARD, ps->pdata->info, &event, result,
freerdp_input_send_keyboard_event, context->input, flags, code);
return result;
}
static BOOL pf_server_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
@ -64,21 +65,23 @@ static BOOL pf_server_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT
static BOOL pf_server_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
{
BOOL result = FALSE;
pServerContext* ps = (pServerContext*)input->context;
pClientContext* pc = ps->pdata->pc;
rdpContext* context = (rdpContext*) pc;
proxyConfig* config = ps->pdata->config;
proxyMouseEventInfo event;
if (!config->Mouse)
return TRUE;
proxyMouseEventInfo info =
{
.flags = flags,
.x = x, .y = y
};
return RUN_FILTER(config->Filters, FILTER_TYPE_MOUSE, ps->pdata->info, &info,
event.flags = flags;
event.x = x;
event.y = y;
RUN_FILTER(config->Filters, FILTER_TYPE_MOUSE, ps->pdata->info, &event, result,
freerdp_input_send_mouse_event, context->input, flags, x, y);
return result;
}
static BOOL pf_server_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x,