channels/drdynvc: silence harmless warnings with Windows 8 / Windows 2012 channel close
This commit is contained in:
parent
161359f6ec
commit
ff5b876260
@ -47,8 +47,10 @@ static int dvcman_create_listener(IWTSVirtualChannelManager* pChannelMgr,
|
|||||||
{
|
{
|
||||||
WLog_DBG(TAG, "create_listener: %d.%s.", dvcman->num_listeners, pszChannelName);
|
WLog_DBG(TAG, "create_listener: %d.%s.", dvcman->num_listeners, pszChannelName);
|
||||||
|
|
||||||
listener = (DVCMAN_LISTENER*) malloc(sizeof(DVCMAN_LISTENER));
|
listener = (DVCMAN_LISTENER*) calloc(1, sizeof(DVCMAN_LISTENER));
|
||||||
ZeroMemory(listener, sizeof(DVCMAN_LISTENER));
|
|
||||||
|
if (!listener)
|
||||||
|
return -1;
|
||||||
|
|
||||||
listener->iface.GetConfiguration = dvcman_get_configuration;
|
listener->iface.GetConfiguration = dvcman_get_configuration;
|
||||||
listener->iface.pInterface = NULL;
|
listener->iface.pInterface = NULL;
|
||||||
@ -407,8 +409,10 @@ int dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId
|
|||||||
if (channel->status == 0)
|
if (channel->status == 0)
|
||||||
{
|
{
|
||||||
pCallback = channel->channel_callback;
|
pCallback = channel->channel_callback;
|
||||||
|
|
||||||
if (pCallback->OnOpen)
|
if (pCallback->OnOpen)
|
||||||
pCallback->OnOpen(pCallback);
|
pCallback->OnOpen(pCallback);
|
||||||
|
|
||||||
WLog_DBG(TAG, "open_channel: ChannelId %d", ChannelId);
|
WLog_DBG(TAG, "open_channel: ChannelId %d", ChannelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,7 +430,10 @@ int dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelI
|
|||||||
|
|
||||||
if (!channel)
|
if (!channel)
|
||||||
{
|
{
|
||||||
WLog_ERR(TAG, "ChannelId %d not found!", ChannelId);
|
/**
|
||||||
|
* Windows 8 / Windows Server 2012 send close requests for channels that failed to be created.
|
||||||
|
* Do not warn, simply return success here.
|
||||||
|
*/
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -465,8 +472,10 @@ int dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr, UI
|
|||||||
Stream_Release(channel->dvc_data);
|
Stream_Release(channel->dvc_data);
|
||||||
|
|
||||||
channel->dvc_data = StreamPool_Take(channel->dvcman->pool, length);
|
channel->dvc_data = StreamPool_Take(channel->dvcman->pool, length);
|
||||||
|
|
||||||
if (!channel->dvc_data)
|
if (!channel->dvc_data)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
channel->dvc_data_length = length;
|
channel->dvc_data_length = length;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -660,7 +669,12 @@ static int drdynvc_send_capability_response(drdynvcPlugin* drdynvc)
|
|||||||
wStream* s;
|
wStream* s;
|
||||||
|
|
||||||
WLog_DBG(TAG, "capability_response");
|
WLog_DBG(TAG, "capability_response");
|
||||||
|
|
||||||
s = Stream_New(NULL, 4);
|
s = Stream_New(NULL, 4);
|
||||||
|
|
||||||
|
if (!s)
|
||||||
|
return -1;
|
||||||
|
|
||||||
Stream_Write_UINT16(s, 0x0050); /* Cmd+Sp+cbChId+Pad. Note: MSTSC sends 0x005c */
|
Stream_Write_UINT16(s, 0x0050); /* Cmd+Sp+cbChId+Pad. Note: MSTSC sends 0x005c */
|
||||||
Stream_Write_UINT16(s, drdynvc->version);
|
Stream_Write_UINT16(s, drdynvc->version);
|
||||||
|
|
||||||
@ -767,8 +781,7 @@ static int drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp, int cb
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
WLog_DBG(TAG, "no listener");
|
WLog_DBG(TAG, "no listener");
|
||||||
Stream_Write_UINT32(data_out, (UINT32)(-1));
|
Stream_Write_UINT32(data_out, 0xFFFFFFFF);
|
||||||
dvcman_close_channel(drdynvc->channel_mgr, ChannelId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
status = drdynvc_send(drdynvc, data_out);
|
status = drdynvc_send(drdynvc, data_out);
|
||||||
@ -784,6 +797,10 @@ static int drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp, int cb
|
|||||||
{
|
{
|
||||||
dvcman_open_channel(drdynvc->channel_mgr, ChannelId);
|
dvcman_open_channel(drdynvc->channel_mgr, ChannelId);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dvcman_close_channel(drdynvc->channel_mgr, ChannelId);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -915,6 +932,7 @@ void* drdynvc_get_init_handle_data(void* pInitHandle)
|
|||||||
void drdynvc_remove_init_handle_data(void* pInitHandle)
|
void drdynvc_remove_init_handle_data(void* pInitHandle)
|
||||||
{
|
{
|
||||||
ListDictionary_Remove(g_InitHandles, pInitHandle);
|
ListDictionary_Remove(g_InitHandles, pInitHandle);
|
||||||
|
|
||||||
if (ListDictionary_Count(g_InitHandles) < 1)
|
if (ListDictionary_Count(g_InitHandles) < 1)
|
||||||
{
|
{
|
||||||
ListDictionary_Free(g_InitHandles);
|
ListDictionary_Free(g_InitHandles);
|
||||||
@ -944,6 +962,7 @@ void drdynvc_remove_open_handle_data(DWORD openHandle)
|
|||||||
{
|
{
|
||||||
void* pOpenHandle = (void*) (size_t) openHandle;
|
void* pOpenHandle = (void*) (size_t) openHandle;
|
||||||
ListDictionary_Remove(g_OpenHandles, pOpenHandle);
|
ListDictionary_Remove(g_OpenHandles, pOpenHandle);
|
||||||
|
|
||||||
if (ListDictionary_Count(g_OpenHandles) < 1)
|
if (ListDictionary_Count(g_OpenHandles) < 1)
|
||||||
{
|
{
|
||||||
ListDictionary_Free(g_OpenHandles);
|
ListDictionary_Free(g_OpenHandles);
|
||||||
|
Loading…
Reference in New Issue
Block a user