Commit fa88afa5 authored by Marc-André Lureau's avatar Marc-André Lureau Committed by Gerd Hoffmann
Browse files

vscclient: do not add a socket watch if there is not data to send



Fixes the following error:
** (process:780): CRITICAL **: do_socket_send: assertion
`socket_to_send->len != 0' failed

Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent f1d3e586
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ static QemuMutex socket_to_send_lock;
static guint socket_tag;

static void
update_socket_watch(gboolean out);
update_socket_watch(void);

static gboolean
do_socket_send(GIOChannel *source,
@@ -80,7 +80,7 @@ do_socket_send(GIOChannel *source,
    g_byte_array_remove_range(socket_to_send, 0, bw);

    if (socket_to_send->len == 0) {
        update_socket_watch(FALSE);
        update_socket_watch();
        return FALSE;
    }
    return TRUE;
@@ -89,7 +89,7 @@ do_socket_send(GIOChannel *source,
static gboolean
socket_prepare_sending(gpointer user_data)
{
    update_socket_watch(TRUE);
    update_socket_watch();

    return FALSE;
}
@@ -440,8 +440,10 @@ do_socket(GIOChannel *source,
}

static void
update_socket_watch(gboolean out)
update_socket_watch(void)
{
    gboolean out = socket_to_send->len > 0;

    if (socket_tag != 0) {
        g_source_remove(socket_tag);
    }