mirror of https://github.com/FreeRDP/FreeRDP
Fixed channel cleanup.
This commit is contained in:
parent
d35823cf69
commit
122f25eb60
|
@ -146,7 +146,7 @@ BOOL freerdp_connect(freerdp* instance)
|
||||||
if (instance->settings->DumpRemoteFx)
|
if (instance->settings->DumpRemoteFx)
|
||||||
{
|
{
|
||||||
instance->update->pcap_rfx = pcap_open(instance->settings->DumpRemoteFxFile,
|
instance->update->pcap_rfx = pcap_open(instance->settings->DumpRemoteFxFile,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
if (instance->update->pcap_rfx)
|
if (instance->update->pcap_rfx)
|
||||||
instance->update->dump_rfx = TRUE;
|
instance->update->dump_rfx = TRUE;
|
||||||
|
@ -209,7 +209,7 @@ BOOL freerdp_connect(freerdp* instance)
|
||||||
|
|
||||||
if (rdp->errorInfo == ERRINFO_SERVER_INSUFFICIENT_PRIVILEGES)
|
if (rdp->errorInfo == ERRINFO_SERVER_INSUFFICIENT_PRIVILEGES)
|
||||||
freerdp_set_last_error(instance->context,
|
freerdp_set_last_error(instance->context,
|
||||||
FREERDP_ERROR_INSUFFICIENT_PRIVILEGES);
|
FREERDP_ERROR_INSUFFICIENT_PRIVILEGES);
|
||||||
|
|
||||||
SetEvent(rdp->transport->connectedEvent);
|
SetEvent(rdp->transport->connectedEvent);
|
||||||
freerdp_connect_finally:
|
freerdp_connect_finally:
|
||||||
|
@ -228,7 +228,7 @@ BOOL freerdp_abort_connect(freerdp* instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL freerdp_get_fds(freerdp* instance, void** rfds, int* rcount, void** wfds,
|
BOOL freerdp_get_fds(freerdp* instance, void** rfds, int* rcount, void** wfds,
|
||||||
int* wcount)
|
int* wcount)
|
||||||
{
|
{
|
||||||
rdpRdp* rdp = instance->context->rdp;
|
rdpRdp* rdp = instance->context->rdp;
|
||||||
transport_get_fds(rdp->transport, rfds, rcount);
|
transport_get_fds(rdp->transport, rfds, rcount);
|
||||||
|
@ -267,7 +267,7 @@ BOOL freerdp_check_fds(freerdp* instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events,
|
DWORD freerdp_get_event_handles(rdpContext* context, HANDLE* events,
|
||||||
DWORD count)
|
DWORD count)
|
||||||
{
|
{
|
||||||
DWORD nCount = 0;
|
DWORD nCount = 0;
|
||||||
nCount += transport_get_event_handles(context->rdp->transport, events, count);
|
nCount += transport_get_event_handles(context->rdp->transport, events, count);
|
||||||
|
@ -343,7 +343,7 @@ HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id)
|
||||||
}
|
}
|
||||||
|
|
||||||
int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
|
int freerdp_message_queue_process_message(freerdp* instance, DWORD id,
|
||||||
wMessage* message)
|
wMessage* message)
|
||||||
{
|
{
|
||||||
int status = -1;
|
int status = -1;
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int freerdp_send_channel_data(freerdp* instance, UINT16 channelId,
|
static int freerdp_send_channel_data(freerdp* instance, UINT16 channelId,
|
||||||
BYTE* data, int size)
|
BYTE* data, int size)
|
||||||
{
|
{
|
||||||
return rdp_send_channel_data(instance->context->rdp, channelId, data, size);
|
return rdp_send_channel_data(instance->context->rdp, channelId, data, size);
|
||||||
}
|
}
|
||||||
|
@ -393,7 +393,9 @@ BOOL freerdp_disconnect(freerdp* instance)
|
||||||
rdp_client_disconnect(rdp);
|
rdp_client_disconnect(rdp);
|
||||||
update_post_disconnect(instance->update);
|
update_post_disconnect(instance->update);
|
||||||
IFCALL(instance->PostDisconnect, instance);
|
IFCALL(instance->PostDisconnect, instance);
|
||||||
if (freerdp_channels_disconnect(instance->context->channels, instance) != CHANNEL_RC_OK)
|
|
||||||
|
if (freerdp_channels_disconnect(instance->context->channels,
|
||||||
|
instance) != CHANNEL_RC_OK)
|
||||||
rc = FALSE;
|
rc = FALSE;
|
||||||
|
|
||||||
if (instance->update->pcap_rfx)
|
if (instance->update->pcap_rfx)
|
||||||
|
@ -404,6 +406,7 @@ BOOL freerdp_disconnect(freerdp* instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
codecs_free(instance->context->codecs);
|
codecs_free(instance->context->codecs);
|
||||||
|
freerdp_channels_close(instance->context->channels, instance);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -532,7 +535,7 @@ BOOL freerdp_context_new(freerdp* instance)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
PubSub_AddEventTypes(context->pubSub, FreeRDP_Events,
|
PubSub_AddEventTypes(context->pubSub, FreeRDP_Events,
|
||||||
sizeof(FreeRDP_Events) / sizeof(wEventType));
|
sizeof(FreeRDP_Events) / sizeof(wEventType));
|
||||||
context->metrics = metrics_new(context);
|
context->metrics = metrics_new(context);
|
||||||
|
|
||||||
if (!context->metrics)
|
if (!context->metrics)
|
||||||
|
@ -623,7 +626,6 @@ void freerdp_context_free(freerdp* instance)
|
||||||
free(instance->context->errorDescription);
|
free(instance->context->errorDescription);
|
||||||
CloseHandle(instance->context->abortEvent);
|
CloseHandle(instance->context->abortEvent);
|
||||||
instance->context->abortEvent = NULL;
|
instance->context->abortEvent = NULL;
|
||||||
freerdp_channels_close(instance->context->channels, instance);
|
|
||||||
freerdp_channels_free(instance->context->channels);
|
freerdp_channels_free(instance->context->channels);
|
||||||
free(instance->context);
|
free(instance->context);
|
||||||
instance->context = NULL;
|
instance->context = NULL;
|
||||||
|
@ -707,7 +709,7 @@ void freerdp_set_last_error(rdpContext* context, UINT32 lastError)
|
||||||
{
|
{
|
||||||
if (lastError)
|
if (lastError)
|
||||||
WLog_ERR(TAG, "freerdp_set_last_error %s [0x%04X]",
|
WLog_ERR(TAG, "freerdp_set_last_error %s [0x%04X]",
|
||||||
freerdp_get_last_error_name(lastError), lastError);
|
freerdp_get_last_error_name(lastError), lastError);
|
||||||
|
|
||||||
context->LastError = lastError;
|
context->LastError = lastError;
|
||||||
|
|
||||||
|
@ -813,7 +815,7 @@ BOOL checkChannelErrorEvent(rdpContext* context)
|
||||||
if (WaitForSingleObject(context->channelErrorEvent, 0) == WAIT_OBJECT_0)
|
if (WaitForSingleObject(context->channelErrorEvent, 0) == WAIT_OBJECT_0)
|
||||||
{
|
{
|
||||||
WLog_ERR(TAG, "%s. Error was %lu", context->errorDescription,
|
WLog_ERR(TAG, "%s. Error was %lu", context->errorDescription,
|
||||||
context->channelErrorNum);
|
context->channelErrorNum);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue