From 79fabff39d3f6628956e55179cc36265e84770af Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Mon, 20 Sep 2010 18:13:32 -0700 Subject: [PATCH] Remove -O2, check rfbInitClient return value, provide return value in client init --- guacamole/libguac/Makefile | 2 +- guacamole/libguac/client.c | 4 +++- guacamole/libguac/include/client.h | 12 ++++++------ guacamole/proxy/Makefile | 2 +- guacamole/proxy/daemon.c | 6 ++++++ guacamole/vnc/Makefile | 2 +- guacamole/vnc/vnc_client.c | 10 ++++++++-- 7 files changed, 26 insertions(+), 12 deletions(-) diff --git a/guacamole/libguac/Makefile b/guacamole/libguac/Makefile index 3105630d6..853e86a3e 100644 --- a/guacamole/libguac/Makefile +++ b/guacamole/libguac/Makefile @@ -1,5 +1,5 @@ -CFLAGS+=-O2 -fPIC -pedantic -Wall -Werror -Iinclude +CFLAGS+= -fPIC -pedantic -Wall -Werror -Iinclude LDFLAGS=-lpng -luuid .PHONY: clean doc diff --git a/guacamole/libguac/client.c b/guacamole/libguac/client.c index 4d8c1c3f3..a68012100 100644 --- a/guacamole/libguac/client.c +++ b/guacamole/libguac/client.c @@ -104,7 +104,9 @@ guac_client* guac_get_client(int client_fd, guac_client_registry* registry, guac guac_flush(client->io); } - client_init(client, argc, scratch_argv); + if (client_init(client, argc, scratch_argv) != 0) + return NULL; + break; } diff --git a/guacamole/libguac/include/client.h b/guacamole/libguac/include/client.h index 1d8358158..f3c676c6d 100644 --- a/guacamole/libguac/include/client.h +++ b/guacamole/libguac/include/client.h @@ -79,7 +79,7 @@ struct guac_client { * @code * void handle_messages(guac_client* client); * - * void guac_client_init(guac_client* client, int argc, char** argv) { + * int guac_client_init(guac_client* client, int argc, char** argv) { * client->handle_messages = handle_messages; * } * @endcode @@ -106,7 +106,7 @@ struct guac_client { * @code * void mouse_handler(guac_client* client, int x, int y, int button_mask); * - * void guac_client_init(guac_client* client, int argc, char** argv) { + * int guac_client_init(guac_client* client, int argc, char** argv) { * client->mouse_handler = mouse_handler; * } * @endcode @@ -124,7 +124,7 @@ struct guac_client { * @code * void key_handler(guac_client* client, int keysym, int pressed); * - * void guac_client_init(guac_client* client, int argc, char** argv) { + * int guac_client_init(guac_client* client, int argc, char** argv) { * client->key_handler = key_handler; * } * @endcode @@ -145,7 +145,7 @@ struct guac_client { * @code * void clipboard_handler(guac_client* client, char* copied); * - * void guac_client_init(guac_client* client, int argc, char** argv) { + * int guac_client_init(guac_client* client, int argc, char** argv) { * client->clipboard_handler = clipboard_handler; * } * @endcode @@ -165,7 +165,7 @@ struct guac_client { * @code * void free_handler(guac_client* client); * - * void guac_client_init(guac_client* client, int argc, char** argv) { + * int guac_client_init(guac_client* client, int argc, char** argv) { * client->free_handler = free_handler; * } * @endcode @@ -174,7 +174,7 @@ struct guac_client { }; -typedef void guac_client_init_handler(guac_client* client, int argc, char** argv); +typedef int guac_client_init_handler(guac_client* client, int argc, char** argv); /** * Initialize and return a new guac_client using the specified client init handler (guac_client_init_handler). diff --git a/guacamole/proxy/Makefile b/guacamole/proxy/Makefile index be182c941..c60e547e3 100644 --- a/guacamole/proxy/Makefile +++ b/guacamole/proxy/Makefile @@ -1,5 +1,5 @@ -CFLAGS+=-O2 -pedantic -Wall -Werror -I../libguac/include +CFLAGS+= -pedantic -Wall -Werror -I../libguac/include LDFLAGS=-L../libguac -lpng -lguac -ldl -lpthread .PHONY: clean diff --git a/guacamole/proxy/daemon.c b/guacamole/proxy/daemon.c index 8b0dfb29e..15c6a35f3 100644 --- a/guacamole/proxy/daemon.c +++ b/guacamole/proxy/daemon.c @@ -53,6 +53,12 @@ void* start_client_thread(void* data) { /* Load and start client */ client = guac_get_client(thread_data->fd, thread_data->registry, thread_data->client_init, thread_data->argc, thread_data->argv); + + if (client == NULL) { + syslog(LOG_ERR, "Client retrieval failed"); + return NULL; + } + guac_start_client(client); /* FIXME: Need to free client, but only if the client is not diff --git a/guacamole/vnc/Makefile b/guacamole/vnc/Makefile index d949c7056..b0da42b33 100644 --- a/guacamole/vnc/Makefile +++ b/guacamole/vnc/Makefile @@ -1,5 +1,5 @@ -CFLAGS+=-O2 -fPIC -pedantic -Wall -Werror -I../libguac/include +CFLAGS+= -fPIC -pedantic -Wall -Werror -I../libguac/include LDFLAGS=-L../libguac -lpng -lguac -lvncclient .PHONY: clean diff --git a/guacamole/vnc/vnc_client.c b/guacamole/vnc/vnc_client.c index f9e643dc8..be41a8bd9 100644 --- a/guacamole/vnc/vnc_client.c +++ b/guacamole/vnc/vnc_client.c @@ -101,6 +101,8 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, int h, int bpp) { guac_send_cursor(io, x, y, png_buffer, w, h); } + + void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) { int dx, dy; @@ -264,7 +266,7 @@ void vnc_guac_client_free_handler(guac_client* client) { } -void guac_client_init(guac_client* client, int argc, char** argv) { +int guac_client_init(guac_client* client, int argc, char** argv) { char* hostname_copy; @@ -299,7 +301,9 @@ void guac_client_init(guac_client* client, int argc, char** argv) { rfb_client->serverHost = hostname_copy; rfb_client->serverPort = atoi(argv[1]); - rfbInitClient(rfb_client, NULL, NULL); + if (!rfbInitClient(rfb_client, NULL, NULL)) { + return 1; + } /* Allocate buffers */ png_buffer = guac_alloc_png_buffer(rfb_client->width, rfb_client->height, 3); /* No-alpha */ @@ -328,5 +332,7 @@ void guac_client_init(guac_client* client, int argc, char** argv) { /* Send size */ guac_send_size(client->io, rfb_client->width, rfb_client->height); + return 0; + }