From c4492bda58aeb19b75e7188014dfcadc7cc56a9d Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 4 Feb 2005 16:03:48 +0000 Subject: [PATCH 1/1] Endianness fixes. Sets encoding. Requests entire area. --- rdpsrv.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/rdpsrv.c b/rdpsrv.c index 43bf2a4..b1b5ea7 100644 --- a/rdpsrv.c +++ b/rdpsrv.c @@ -137,10 +137,33 @@ int vnc_init() printf("Server is %u x %u\n", ntohs(si.width), ntohs(si.height)); - if (read(vnc_sock, buf, si.name_len) != si.name_len) - error("short read on server name"); + if (read(vnc_sock, buf, ntohs(si.name_len)) != ntohs(si.name_len)) + error("short read on server name\n"); - printf("Server name is '%*s'\n", si.name_len, buf); + printf("Server name is '%*s'\n", ntohs(si.name_len), buf); + + // we can only accept raw encoding + buf[0] = 2; // message type + buf[1] = 0; // padding + buf[2] = 0; // number of encodings + buf[3] = 1; + buf[4] = 0; // raw encoding + + write(vnc_sock, buf, 5); + + // request the entire framebuffer + buf[0] = 3; // message type + buf[1] = 0; // incremental + buf[2] = 0; // xpos + buf[3] = 0; + buf[4] = 0; // ypos + buf[5] = 0; + buf[6] = 640 >> 8; // width + buf[7] = 640 % 0xff; + buf[8] = 480 >> 8; // height + buf[9] = 480 % 0xff; + + write(vnc_sock, buf, 10); printf("Connected to VNC!\n"); -- 2.39.2