#if WITH_DEBUG
DEBUG(("RDP packet #%d, (type %x, length %u)\n", ++g_packetno, *type, length));
- //hexdump(g_next_packet, length);
+ hexdump(g_next_packet, length);
#endif /* */
g_next_packet += length;
{
STREAM s;
- int length = 10*2 + width*height*3 + 8;
+ int length = 10*2 + width*height*3 + 5 + 3;
- printf("RDP5 chunk length: %u\n", 10*2 + width*height*3 + 2);
-
- s = tcp_init(length);
- out_uint8(s, 0); // version (RDP5)
- out_uint8(s, 0x80 | (length >> 8));
- out_uint8(s, length & 0xff);
+ s = rdp5_init(length, 1);
+ out_uint8(s, 3); // ??
+ out_uint16_le(s, 0); // length
+
out_uint8(s, 1); // process bitmap update
out_uint16_le(s, 10*2 + width*height*3 + 2); // RDP5 chunk length
out_uint16_le(s, 10*2 + width*height*3); // part length
out_uint8p(s, data, width*height*3);
s_mark_end(s);
- tcp_send(s);
+ rdp5_send(s, 1);
}
#define EXPECT16(value) { in_uint16_le(s, unknown); if (unknown != (value)) printf("Unknown value on code line %u; expected 0x%x, got 0x%x\n", __LINE__, (value), unknown); }
}
/* Send a control PDU */
-static void
+void
rdp_send_control(uint16 action)
{
STREAM s;
}
/* Send a synchronisation PDU */
-static void
-rdp_send_synchronise(void)
+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);