On 03/14/2011 03:02 PM, Bastien ROUCARIES wrote:
>
> recv(socket, buf, 512) => return 17, buf = "getfd\n0x12345678\0"
> parse getfd
> recvfd fails, or even worse it blocks (possibly forever)
> even if recvfd doesn't block, parsing 0x12345678\0 fails
Why ? It is like sending and receiving data throught a protocol. i
will emulate AF_UNIX by tcp socket over localhost with TCP_NODELAY
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).
Paolo