The current implementation finishes it only after new data arrives from the channel (or after it is cancelled). Signed-off-by: Jakub Janků <jjanku@xxxxxxxxxx> --- src/vmcstream.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/vmcstream.c b/src/vmcstream.c index 86c949a..451d06e 100644 --- a/src/vmcstream.c +++ b/src/vmcstream.c @@ -201,14 +201,21 @@ spice_vmc_input_stream_read_all_async(GInputStream *stream, /* no concurrent read permitted by ginputstream */ g_return_if_fail(self->task == NULL); - self->all = TRUE; - self->buffer = buffer; - self->count = count; - self->pos = 0; + task = g_task_new(self, cancellable, callback, user_data); + if (count == 0) { + g_task_return_int(task, 0); + g_object_unref(task); + return; + } + + self->all = TRUE; + self->buffer = buffer; + self->count = count; + self->pos = 0; self->task = task; if (cancellable) self->cancel_id = -- 2.21.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel