char *directory);
void rdp_disconnect(void);
void rdp_send_bitmap_update(unsigned x, unsigned y, unsigned width, unsigned height, unsigned char *data);
+void rdp_send_control(uint16 action);
+void rdp_send_synchronise(uint16 id);
/* rdpdr.c */
void rdpdr_send_connect(void);
void rdpdr_send_name(void);
/* Send a synchronisation PDU */
void
-rdp_send_synchronise(void)
+rdp_send_synchronise(uint16 id)
{
STREAM s;
s = rdp_init_data(4);
out_uint16_le(s, 1); /* type */
- out_uint16_le(s, 1002);
+ out_uint16_le(s, id);
s_mark_end(s);
rdp_send_data(s, RDP_DATA_PDU_SYNCHRONISE);
for ( ;; ) {
uint8 type, data_pdu_type;
+ uint16 id;
STREAM s;
fd_set readfs;
handle_control_pdu(s);
break;
case RDP_DATA_PDU_SYNCHRONISE:
- rdp_send_synchronise(s);
+ in_uint16_le(s, id);
+ printf("Synchronise, id=%u\n", id);
+ rdp_send_synchronise(id);
+ break;
+ case RDP_DATA_PDU_FONT2:
+ // respond with the
+ // unknown 0x28 PDU
+ // here?
+ printf("FONT2, ignored\n");
break;
default:
printf("Unknown data PDU type %u\n", data_pdu_type);