wMsgSize = length - LICENSE_PACKET_HEADER_LENGTH;
flags = EXTENDED_ERROR_MSG_SUPPORTED | PREAMBLE_VERSION_3_0;
- rdp_write_header(license->rdp, s, length);
+ rdp_write_header(license->rdp, s, length, MCS_GLOBAL_CHANNEL_ID);
rdp_write_security_header(s, sec_flags);
license_write_preamble(s, type, flags, wMsgSize);
* @param rdp rdp module
* @param s stream
* @param length RDP packet length
+ * @param channel_id channel id
*/
-void rdp_write_header(rdpRdp* rdp, STREAM* s, int length)
+void rdp_write_header(rdpRdp* rdp, STREAM* s, int length, uint16 channel_id)
{
mcs_write_domain_mcspdu_header(s, DomainMCSPDU_SendDataRequest, length);
per_write_integer16(s, rdp->mcs->user_id, MCS_BASE_CHANNEL_ID); /* initiator */
- per_write_integer16(s, MCS_GLOBAL_CHANNEL_ID, 0); /* channelId */
+ per_write_integer16(s, channel_id, 0); /* channelId */
stream_write_uint8(s, 0x70); /* dataPriority + segmentation */
length = (length - RDP_PACKET_HEADER_LENGTH) | 0x8000;
* Send an RDP packet.\n
* @param rdp RDP module
* @param s stream
+ * @param channel_id channel id
*/
-void rdp_send(rdpRdp* rdp, STREAM* s)
+void rdp_send(rdpRdp* rdp, STREAM* s, uint16 channel_id)
{
int length;
length = stream_get_length(s);
stream_set_pos(s, 0);
- rdp_write_header(rdp, s, length);
+ rdp_write_header(rdp, s, length, channel_id);
stream_set_pos(s, length);
transport_write(rdp->transport, s);
length = stream_get_length(s);
stream_set_pos(s, 0);
- rdp_write_header(rdp, s, length);
+ rdp_write_header(rdp, s, length, MCS_GLOBAL_CHANNEL_ID);
rdp_write_share_control_header(s, length, type, channel_id);
stream_set_pos(s, length);
length = stream_get_length(s);
stream_set_pos(s, 0);
- rdp_write_header(rdp, s, length);
+ rdp_write_header(rdp, s, length, MCS_GLOBAL_CHANNEL_ID);
rdp_write_share_control_header(s, length, PDU_TYPE_DATA, channel_id);
rdp_write_share_data_header(s, length, type, rdp->settings->share_id);
void rdp_write_share_data_header(STREAM* s, uint16 length, uint8 type, uint32 share_id);
STREAM* rdp_send_stream_init(rdpRdp* rdp);
-void rdp_write_header(rdpRdp* rdp, STREAM* s, int length);
+void rdp_write_header(rdpRdp* rdp, STREAM* s, int length, uint16 channel_id);
STREAM* rdp_pdu_init(rdpRdp* rdp);
void rdp_send_pdu(rdpRdp* rdp, STREAM* s, uint16 type, uint16 channel_id);
STREAM* rdp_data_pdu_init(rdpRdp* rdp);
void rdp_send_data_pdu(rdpRdp* rdp, STREAM* s, uint16 type, uint16 channel_id);
-void rdp_send(rdpRdp* rdp, STREAM* s);
+void rdp_send(rdpRdp* rdp, STREAM* s, uint16 channel_id);
void rdp_recv(rdpRdp* rdp);
int rdp_send_channel_data(rdpRdp* rdp, int channel_id, uint8* data, int size);