diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2013-12-01 22:23:35 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2013-12-16 10:12:19 +0100 |
commit | fa88afa51c7db927b3dd6c2f7878c23e53441de6 (patch) | |
tree | 54239df013b2182ed3733d2f4253dddeab0250d9 | |
parent | f1d3e586f069e17f83b669842bc02d60d509daca (diff) |
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: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | libcacard/vscclient.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libcacard/vscclient.c b/libcacard/vscclient.c index f1d46d397a..24f7088ecf 100644 --- a/libcacard/vscclient.c +++ b/libcacard/vscclient.c @@ -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); } |