[Spice-devel] More on xspice + failure in net ping over vpn
Jeremy White
jwhite at codeweavers.com
Fri May 4 09:36:55 PDT 2012
So I've probed more deeply after my naive misunderstanding
of the consequence of the EAGAIN.
I believe I am closer to the source of the problem; I also
believe the problem is more serious than I realized; it's likely to bite
anyone trying the xspice solution quite hard.
That is, in spiceqxl_main_loop.c in the qxl X driver, there
is a basic implementation of watch_add/watch_update_mask.
The watch stuff is vital to retrying sends when they don't
go out due to a blocking condition.
However, that implementation does not function fully. It relies
on client activity on the X server to trigger a select polling
loop. But when sending the large initial network ping packet,
we have no client activity, and we just hang. The attached
patch 'improves' things, but I really have no sense as to whether
or not it would be a reliable solution.
I looked at trying to use the red_worker watch add stuff instead,
and I see that gets hairy. You need the watches before you
have a channel; the red_worker stuff relies on having a channel
to hang it's stuff off of.
But I have to confess it feels right - we've got our own thread;
we created the socket, and do all the listens/accept - why don't we
do our own watching?
Cheers,
Jeremy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: watch.diff
Type: text/x-patch
Size: 422 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20120504/f968825d/attachment.bin>
More information about the Spice-devel
mailing list