[libvirt] virDomainMemoryPeek & maximum remote message buffer size

Daniel Veillard veillard at redhat.com
Wed Jul 9 20:06:07 UTC 2008


On Wed, Jul 09, 2008 at 08:26:47PM +0100, Richard W.M. Jones wrote:
> (2) There is some really odd problem with our use of recv(2) which
> causes messages > 64 KB to fail.  I have no idea what is really
> happening, but the sequence of events seems to be this:
> 
>   server                             client
> 
>   write(sock,buf,len) = len-k
>                                      recv(sock,buf,len) = len-k
> 
>   write(sock,buf+len-k,len-k) = k
> 
>                                      recv(sock,buf,k) = 0 [NOT k]
> 
> At this point the client assumes that the server has unexpectedly
> closed the connection and fails.  I have stared at this for a while,
> but I've got no idea at all what's going on.

  I don't think you can expect the second recv() to return exactly k
as this can get fragmented (nor expect that the first recv would get 
len -k either), but if you got 0 that would mean a packet has been
received and there is no more data, that would be a bug IMHO.
That's strange ...

Daniel


-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list