|
From: | Paolo Bonzini |
Subject: | Re: passfd on more platforms |
Date: | Mon, 14 Mar 2011 16:05:04 +0100 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Lightning/1.0b3pre Mnenhy/0.8.3 Thunderbird/3.1.7 |
On 03/14/2011 03:44 PM, Eric Blake wrote:
> No, that's exactly the_wrong_ reason for TCP_NODELAY. You simply > cannot expect message boundaries to be respected when using SOCK_STREAM. > > So, either sendfd/recvfd must be documented to work only on SOCK_DGRAM > sockets, or they have to be rethought (if possible at all). Note that just last week libvirt found an issue with SOCK_STREAM hanging forever on recvfd when the sendfd side was skipped, but SOCK_DGRAM was able to reliably detect when the sending side of the socket is closed. I'm perfectly fine with documenting that sendfd/recvfd must be used on SOCK_DGRAM only.
But that was a different problem. That was not related to sendfd/recvfd.However, there are cases in which you want to send a file descriptor as out-of-band messages on a stream socket, and libvirt also has one of those.
From a quick experiment, BTW, on a SOCK_DGRAM Unix socket you don't need to send fake data at the same time, but I may be wrong and/or that may not be portable.
Paolo
[Prev in Thread] | Current Thread | [Next in Thread] |