From 7bbc9b5ae56f1766b1608d5d2329abcf9ed94d6e Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 23 Sep 2010 09:54:17 +0000 Subject: [PATCH] Fixed closing of stream on transfer. --- guacamole/libguac/include/guacio.h | 1 + guacamole/libguac/src/client.c | 2 +- guacamole/libguac/src/guacio.c | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/guacamole/libguac/include/guacio.h b/guacamole/libguac/include/guacio.h index c00119a2f..6e10a80f7 100644 --- a/guacamole/libguac/include/guacio.h +++ b/guacamole/libguac/include/guacio.h @@ -49,6 +49,7 @@ ssize_t guac_flush_base64(GUACIO* io); ssize_t guac_flush(GUACIO* io); int guac_select(GUACIO* io, int usec_timeout); void guac_close(GUACIO* io); +void guac_close_final(GUACIO* io); #endif diff --git a/guacamole/libguac/src/client.c b/guacamole/libguac/src/client.c index 3c4eb024b..95734bc4c 100644 --- a/guacamole/libguac/src/client.c +++ b/guacamole/libguac/src/client.c @@ -197,7 +197,7 @@ void guac_start_client(guac_client* client) { /* Accept changes to client I/O only before handling messages */ if (client_copy.io != client->io) { - guac_close(client_copy.io); /* Close old I/O */ + guac_close_final(client_copy.io); /* Close old I/O and fd */ client_copy.io = client->io; } diff --git a/guacamole/libguac/src/guacio.c b/guacamole/libguac/src/guacio.c index 3deff95f9..a73e107a2 100644 --- a/guacamole/libguac/src/guacio.c +++ b/guacamole/libguac/src/guacio.c @@ -60,6 +60,12 @@ void guac_close(GUACIO* io) { free(io); } +void guac_close_final(GUACIO* io) { + guac_flush(io); + close(io->fd); + free(io); +} + /* Write bytes, limit rate */ ssize_t __guac_write(GUACIO* io, const char* buf, int count) {