--- gqview-2.0.4/src/remote.c.orig 2008-08-20 17:41:56.656014000 +0800
+++ gqview-2.0.4/src/remote.c 2008-08-20 18:00:55.127044000 +0800
@@ -43,6 +43,7 @@
{
RemoteClient *client = data;
RemoteConnection *rc;
+ GIOStatus status;
rc = client->rc;
@@ -54,7 +55,7 @@
GError *error = NULL;
guint termpos;
- while (g_io_channel_read_line(source, &buffer, NULL, &termpos, &error) == G_IO_STATUS_NORMAL)
+ while ((status = g_io_channel_read_line(source, &buffer, NULL, &termpos, &error)) == G_IO_STATUS_NORMAL)
{
if (buffer)
{
@@ -71,7 +72,16 @@
buffer = NULL;
}
+
}
+ if (status == G_IO_STATUS_EOF)
+ {
+ rc->clients = g_list_remove(rc->clients, client);
+ g_source_remove(client->channel_id);
+ close(client->fd);
+ g_free(client);
+ return TRUE;
+ }
if (error)
{