[Spice-devel] [PATCH] [spice-gtk] DND: fix special case that file size is 0

Marc-André Lureau mlureau at redhat.com
Mon Aug 11 09:58:44 PDT 2014



----- Original Message -----
> On windows guest, after dra gging a zero-size file, the file will be occupied
> by vdagent. For spice-gtk ignores this case, and stops sending data after
> sending
> a start message to agent, see here for more details:
> http://lists.freedesktop.org/archives/spice-devel/2014-August/017184.html
> I accept the suggestion of Christophe and fix the bug in spice-gtk.
> Pay attention to the modification of
>> agent_msg_queue_many, I think it's a small trick.

Isn't this changing the protocol?

We use to send xfer-start of data size 0 and then xfer-data of data size 0, and now we skip the second part.

That's an an incompatible change. I would prefer if we keep sending the xfer-data message, even if it is of size 0.

Or if you prefer don't initiate xfer at all if the file size is 0. But I don't think that's worth it, and it would be some "racy" code (check size before doing actual operation)

>>> ---
> gtk/channel-main.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gtk/channel-main.c b/gtk/channel-main.c
> index 7a299a4..1e8e3f5 100644
> --- a/gtk/channel-main.c
> +++ b/gtk/channel-main.c
> @@ -936,7 +936,7 @@ static void
> ​​
> agent_msg_queue_many(SpiceMainChannel *channel, int type, const void
> memcpy(payload, &msg, sizeof(VDAgentMessage));
> payload += sizeof(VDAgentMessage);
> paysize -= sizeof(VDAgentMessage);
> - if (paysize == 0) {
> + if (size != 0 && paysize == 0) {
> g_queue_push_tail(c->agent_msg_queue, out);
> out = NULL;
> }
> @@ -1637,7 +1637,7 @@ static void file_xfer_read_cb(GObject *source_object,
> return;
> }
> 
> - if (count > 0) {
> + if (count >= 0) {
> task->read_bytes += count;
> file_xfer_queue(task, count);
> file_xfer_flush_async(channel, task->cancellable,
> --
> 1.9.3 ​
> 
> --
> Q S B D T 0 R F U i B G U k 9 N I F J J R V N U I E 9 G I E N U U 0V V
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 


More information about the Spice-devel mailing list