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

Cody Chan int64ago at gmail.com
Mon Aug 11 10:09:20 PDT 2014


On Tue, Aug 12, 2014 at 12:58 AM, Marc-André Lureau <mlureau at redhat.com>
wrote:

>
>
> ----- 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)

​You mean client shouldn't send a zero-size file?I think sending such file
is ​meaningless, too.
And I prefer this can be fixed through a more comfortable way.

> > ​
> > ​
> > ---
> > 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
> >
>



-- 
QSBDT0RFUiBGUk9NIFJJRVNUIE9GIENUU0VV
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20140812/4483327d/attachment.html>


More information about the Spice-devel mailing list