diff --git a/guacamole/proxy/Makefile b/guacamole/proxy/Makefile index aea65d8b4..5c62706db 100644 --- a/guacamole/proxy/Makefile +++ b/guacamole/proxy/Makefile @@ -1,5 +1,5 @@ -CFLAGS=-O2 -ansi -pedantic -Wall -Werror +CFLAGS=-O2 -pedantic -Wall -Werror LDFLAGS=-lpng -lvncclient .PHONY: clean diff --git a/guacamole/proxy/vnc_client.c b/guacamole/proxy/vnc_client.c index ab4c441fe..0a7fd2b2d 100644 --- a/guacamole/proxy/vnc_client.c +++ b/guacamole/proxy/vnc_client.c @@ -21,6 +21,7 @@ #include #include #include +#include #include @@ -175,6 +176,7 @@ void vnc_guac_client_handle_messages(guac_client* client) { int wait_result; rfbClient* rfb_client = ((vnc_guac_client_data*) client->data)->rfb_client; + wait_result = WaitForMessage(rfb_client, 2000); if (wait_result < 0) { fprintf(stderr, "WAIT FAIL\n"); @@ -183,11 +185,21 @@ void vnc_guac_client_handle_messages(guac_client* client) { if (wait_result > 0) { + struct timespec sleep_period; + if (!HandleRFBServerMessage(rfb_client)) { fprintf(stderr, "HANDLE FAIL\n"); return; } + /* Wait before returning ... don't want to handle + * too many server messages. */ + + sleep_period.tv_sec = 0; + sleep_period.tv_nsec = 50000000L /* 50 ms */; + + nanosleep(&sleep_period, NULL); + } }