Client data and free handler.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 26 Mar 2011 05:59:39 +0000 (22:59 -0700)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 26 Mar 2011 05:59:39 +0000 (22:59 -0700)
src/rdp_client.c

index 476b540..9b8930c 100644 (file)
@@ -55,8 +55,34 @@ const char* GUAC_CLIENT_ARGS[] = {
     NULL
 };
 
+typedef struct rdp_guac_client_data {
+
+    rdpInst* rdp_inst;
+    rdpChanMan* chanman;
+       rdpSet* settings;
+
+} rdp_guac_client_data;
+
+int rdp_guac_client_free_handler(guac_client* client) {
+
+    rdp_guac_client_data* guac_client_data = (rdp_guac_client_data*) client->data;
+
+    /* Free RDP client */
+    freerdp_free(guac_client_data->rdp_inst);
+    freerdp_chanman_free(guac_client_data->chanman);
+    free(guac_client_data->settings);
+
+    /* Free guac client data */
+    free(guac_client_data);
+
+    return 0;
+
+}
+
 int guac_client_init(guac_client* client, int argc, char** argv) {
 
+    rdp_guac_client_data* guac_client_data;
+
     rdpInst* rdp_inst;
     rdpChanMan* chanman;
        rdpSet* settings;
@@ -121,9 +147,14 @@ int guac_client_init(guac_client* client, int argc, char** argv) {
     /* rdp_inst->rdp_disconnect(rdp_inst) */
     /* freerdp_chanman_post_connect ? */
 
-    freerdp_free(rdp_inst);
-    freerdp_chanman_free(chanman);
-    free(settings);
+    /* Init client data */
+    guac_client_data = malloc(sizeof(rdp_guac_client_data));
+    guac_client_data->settings = settings;
+    guac_client_data->chanman = chanman;
+    guac_client_data->rdp_inst = rdp_inst;
+
+    /* Client handlers */
+    client->free_handler = rdp_guac_client_free_handler;
 
     /* STUB */
     guac_send_error(client->io, "STUB");