Fix to ensure channels are rejoined on a server redirect operation

This commit is contained in:
Nigel Reeves 2013-01-24 11:40:24 +00:00
parent 616aed4ec2
commit 43ef3785c6
2 changed files with 19 additions and 0 deletions

View File

@ -128,6 +128,8 @@ boolean rdp_client_redirect(rdpRdp* rdp)
rdp_client_disconnect(rdp);
rdp_clear_joined_channels(rdp);
mcs_free(rdp->mcs);
nego_free(rdp->nego);
license_free(rdp->license);
@ -343,6 +345,22 @@ boolean rdp_client_connect_mcs_attach_user_confirm(rdpRdp* rdp, STREAM* s)
return true;
}
void rdp_clear_joined_channels(rdpRdp* rdp)
{
int i;
if (rdp->mcs->user_channel_joined)
rdp->mcs->user_channel_joined = false;
if (rdp->mcs->global_channel_joined)
rdp->mcs->global_channel_joined = false;
for (i = 0; i < rdp->settings->num_channels; i++)
{
if (rdp->settings->channels[i].joined)
rdp->settings->channels[i].joined = false;
}
}
boolean rdp_client_connect_mcs_channel_join_confirm(rdpRdp* rdp, STREAM* s)
{
int i;

View File

@ -50,6 +50,7 @@ boolean rdp_client_connect(rdpRdp* rdp);
boolean rdp_client_redirect(rdpRdp* rdp);
boolean rdp_client_connect_mcs_connect_response(rdpRdp* rdp, STREAM* s);
boolean rdp_client_connect_mcs_attach_user_confirm(rdpRdp* rdp, STREAM* s);
void rdp_clear_joined_channels(rdpRdp* rdp);
boolean rdp_client_connect_mcs_channel_join_confirm(rdpRdp* rdp, STREAM* s);
boolean rdp_client_connect_license(rdpRdp* rdp, STREAM* s);
boolean rdp_client_connect_demand_active(rdpRdp* rdp, STREAM* s);