diff --git a/daemon/gvfschannel.c b/daemon/gvfschannel.c
index efe2376..0d5438d 100644
--- a/daemon/gvfschannel.c
+++ b/daemon/gvfschannel.c
@@ -284,6 +284,7 @@ static void
 request_reader_free (RequestReader *reader)
 {
   g_object_unref (reader->command_stream);
+  g_object_unref (reader->channel);
   g_free (reader->data);
   g_free (reader);
 }
@@ -539,7 +540,7 @@ start_request_reader (GVfsChannel *channel)
   RequestReader *reader;
 
   reader = g_new0 (RequestReader, 1);
-  reader->channel = channel;
+  reader->channel = g_object_ref (channel);
   reader->command_stream = g_object_ref (channel->priv->command_stream);
   
   g_input_stream_read_async (reader->command_stream,
