From 3d3f0bc3f7d5d74a7ae14f7336c9c3c209cdb71b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 5 Aug 2021 17:57:11 +0400 Subject: [PATCH] ui/vdagent: send empty clipboard when unhandled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rather than leaving the agent timing out or hanging, reply to it with an empty result. Signed-off-by: Marc-André Lureau Message-Id: <20210805135715.857938-15-marcandre.lureau@redhat.com> Acked-by: Gerd Hoffmann --- ui/trace-events | 1 + ui/vdagent.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/ui/trace-events b/ui/trace-events index 1b5f87bc09..b9c0dd0fa1 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -129,6 +129,7 @@ xkeymap_keymap(const char *name) "keymap '%s'" vdagent_open(void) "" vdagent_close(void) "" vdagent_send(const char *name) "msg %s" +vdagent_send_empty_clipboard(void) "" vdagent_recv_chunk(uint32_t size) "size %d" vdagent_recv_msg(const char *name, uint32_t size) "msg %s, size %d" vdagent_peer_cap(const char *name) "cap %s" diff --git a/ui/vdagent.c b/ui/vdagent.c index cd07937a4b..cd49da1ffa 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -375,6 +375,16 @@ static void vdagent_send_clipboard_data(VDAgentChardev *vd, vdagent_send_msg(vd, msg); } +static void vdagent_send_empty_clipboard_data(VDAgentChardev *vd, + QemuClipboardSelection selection, + QemuClipboardType type) +{ + g_autoptr(QemuClipboardInfo) info = qemu_clipboard_info_new(&vd->cbpeer, selection); + + trace_vdagent_send_empty_clipboard(); + vdagent_send_clipboard_data(vd, info, type); +} + static void vdagent_clipboard_notify(Notifier *notifier, void *data) { VDAgentChardev *vd = container_of(notifier, VDAgentChardev, cbpeer.update); @@ -482,6 +492,8 @@ static void vdagent_clipboard_recv_request(VDAgentChardev *vd, uint8_t s, uint32 vd->cbpending[s] |= (1 << type); qemu_clipboard_request(info, type); } + } else { + vdagent_send_empty_clipboard_data(vd, s, type); } }