GUAC-1164: Ensure audio stream and context are freed upon disconnect.
This commit is contained in:
parent
8c37db8a07
commit
0a4bfc95d1
@ -981,18 +981,27 @@ static int guac_rdp_handle_connection(guac_client* client) {
|
|||||||
|
|
||||||
pthread_mutex_lock(&(rdp_client->rdp_lock));
|
pthread_mutex_lock(&(rdp_client->rdp_lock));
|
||||||
|
|
||||||
/* Clean up RDP client */
|
/* Disconnect client and channels */
|
||||||
freerdp_channels_close(channels, rdp_inst);
|
freerdp_channels_close(channels, rdp_inst);
|
||||||
freerdp_channels_free(channels);
|
freerdp_channels_free(channels);
|
||||||
freerdp_disconnect(rdp_inst);
|
freerdp_disconnect(rdp_inst);
|
||||||
|
|
||||||
|
/* Clean up RDP client context */
|
||||||
freerdp_clrconv_free(((rdp_freerdp_context*) rdp_inst->context)->clrconv);
|
freerdp_clrconv_free(((rdp_freerdp_context*) rdp_inst->context)->clrconv);
|
||||||
cache_free(rdp_inst->context->cache);
|
cache_free(rdp_inst->context->cache);
|
||||||
|
freerdp_context_free(rdp_inst);
|
||||||
|
|
||||||
|
/* Clean up RDP client */
|
||||||
freerdp_free(rdp_inst);
|
freerdp_free(rdp_inst);
|
||||||
|
|
||||||
/* Clean up filesystem, if allocated */
|
/* Clean up filesystem, if allocated */
|
||||||
if (rdp_client->filesystem != NULL)
|
if (rdp_client->filesystem != NULL)
|
||||||
guac_rdp_fs_free(rdp_client->filesystem);
|
guac_rdp_fs_free(rdp_client->filesystem);
|
||||||
|
|
||||||
|
/* Clean up audio stream, if allocated */
|
||||||
|
if (rdp_client->audio != NULL)
|
||||||
|
guac_audio_stream_free(rdp_client->audio);
|
||||||
|
|
||||||
#ifdef ENABLE_COMMON_SSH
|
#ifdef ENABLE_COMMON_SSH
|
||||||
/* Free SFTP filesystem, if loaded */
|
/* Free SFTP filesystem, if loaded */
|
||||||
if (rdp_client->sftp_filesystem)
|
if (rdp_client->sftp_filesystem)
|
||||||
|
Loading…
Reference in New Issue
Block a user