boolean rdp_server_accept_mcs_channel_join_request(rdpRdp* rdp, STREAM* s) { int i; uint16 channel_id; boolean all_joined = true; if (!mcs_recv_channel_join_request(rdp->mcs, s, &channel_id)) return false; if (!mcs_send_channel_join_confirm(rdp->mcs, channel_id)) return false; if (channel_id == rdp->mcs->user_id) rdp->mcs->user_channel_joined = true; else if (channel_id == MCS_GLOBAL_CHANNEL_ID) rdp->mcs->global_channel_joined = true; for (i = 0; i < rdp->settings->num_channels; i++) { if (rdp->settings->channels[i].channel_id == channel_id) rdp->settings->channels[i].joined = true; if (!rdp->settings->channels[i].joined) all_joined = false; } if (rdp->mcs->user_channel_joined && rdp->mcs->global_channel_joined && all_joined) rdp->state = CONNECTION_STATE_MCS_CHANNEL_JOIN; return true; }
BOOL rdp_server_accept_mcs_channel_join_request(rdpRdp* rdp, wStream* s) { UINT32 i; UINT16 channelId; BOOL allJoined = TRUE; rdpMcs* mcs = rdp->mcs; if (!mcs_recv_channel_join_request(mcs, s, &channelId)) return FALSE; if (!mcs_send_channel_join_confirm(mcs, channelId)) return FALSE; if (channelId == mcs->userId) mcs->userChannelJoined = TRUE; else if (channelId == MCS_GLOBAL_CHANNEL_ID) mcs->globalChannelJoined = TRUE; for (i = 0; i < mcs->channelCount; i++) { if (mcs->channels[i].ChannelId == channelId) mcs->channels[i].joined = TRUE; if (!mcs->channels[i].joined) allJoined = FALSE; } if ((mcs->userChannelJoined) && (mcs->globalChannelJoined) && allJoined) { rdp_server_transition_to_state(rdp, CONNECTION_STATE_RDP_SECURITY_COMMENCEMENT); } return TRUE; }
BOOL rdp_server_accept_mcs_channel_join_request(rdpRdp* rdp, wStream* s) { int i; UINT16 channel_id; BOOL all_joined = TRUE; if (!mcs_recv_channel_join_request(rdp->mcs, s, &channel_id)) return FALSE; if (!mcs_send_channel_join_confirm(rdp->mcs, channel_id)) return FALSE; if (channel_id == rdp->mcs->user_id) rdp->mcs->user_channel_joined = TRUE; else if (channel_id == MCS_GLOBAL_CHANNEL_ID) rdp->mcs->global_channel_joined = TRUE; for (i = 0; i < rdp->settings->ChannelCount; i++) { if (rdp->settings->ChannelDefArray[i].ChannelId == channel_id) rdp->settings->ChannelDefArray[i].joined = TRUE; if (!rdp->settings->ChannelDefArray[i].joined) all_joined = FALSE; } if (rdp->mcs->user_channel_joined && rdp->mcs->global_channel_joined && all_joined) rdp->state = CONNECTION_STATE_MCS_CHANNEL_JOIN; return TRUE; }