libfreerdp-core: fix encoding of share control header

This commit is contained in:
Marc-André Moreau 2011-07-21 21:44:11 -04:00
parent 66ddfd5a60
commit 815c99916a
2 changed files with 10 additions and 9 deletions

View File

@ -97,17 +97,17 @@ boolean rdp_client_connect(rdpRdp* rdp)
rdp_send_client_synchronize_pdu(rdp);
rdp_send_client_cooperate_pdu(rdp);
rdp_recv(rdp); /* synchronize */
rdp_recv(rdp); /* cooperate */
rdp_recv(rdp);
rdp_recv(rdp);
rdp_recv(rdp);
rdp_send_client_request_control_pdu(rdp);
rdp_recv(rdp); /* request control */
rdp_recv(rdp);
//rdp_send_client_request_control_pdu(rdp);
//rdp_send_client_persistent_key_list_pdu(rdp);
//rdp_send_client_font_list_pdu(rdp);
sleep(1);
return True;
}

View File

@ -60,7 +60,7 @@ void rdp_write_share_control_header(STREAM* s, uint16 length, uint16 type, uint1
{
/* Share Control Header */
stream_write_uint16(s, length); /* totalLength */
stream_write_uint16(s, type); /* pduType */
stream_write_uint16(s, type | 0x10); /* pduType */
stream_write_uint16(s, channel_id); /* pduSource */
}
@ -84,7 +84,8 @@ void rdp_write_share_data_header(STREAM* s, uint16 length, uint8 type, uint32 sh
stream_write_uint8(s, STREAM_LOW); /* streamId (1 byte) */
stream_write_uint16(s, length); /* uncompressedLength (2 bytes) */
stream_write_uint8(s, type); /* pduType2, Data PDU Type (1 byte) */
stream_write_uint16(s, length); /* compressedLength (2 byte2) */
stream_write_uint8(s, 0); /* compressedType (1 byte) */
stream_write_uint16(s, 0); /* compressedLength (2 bytes) */
}
/**
@ -162,7 +163,7 @@ void rdp_send_pdu(rdpRdp* rdp, STREAM* s, uint16 type, uint16 channel_id)
stream_set_pos(s, 0);
rdp_write_header(rdp, s, length);
rdp_write_share_control_header(s, length, PDU_TYPE_DATA, channel_id);
rdp_write_share_control_header(s, length, type, channel_id);
stream_set_pos(s, length);
transport_write(rdp->transport, s);