aboutsummaryrefslogtreecommitdiff
path: root/libcacard
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2013-12-01 22:23:35 +0100
committerGerd Hoffmann <kraxel@redhat.com>2013-12-16 10:12:19 +0100
commitfa88afa51c7db927b3dd6c2f7878c23e53441de6 (patch)
tree54239df013b2182ed3733d2f4253dddeab0250d9 /libcacard
parentf1d3e586f069e17f83b669842bc02d60d509daca (diff)
downloadqemu-arm-fa88afa51c7db927b3dd6c2f7878c23e53441de6.tar.gz
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>
Diffstat (limited to 'libcacard')
-rw-r--r--libcacard/vscclient.c10
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);
}