The unreliability of AF_UNIX datagram sockets

Corinna Vinschen
Mon May 3 18:40:03 GMT 2021

On May  3 12:56, Ken Brown wrote:
> On 5/3/2021 11:45 AM, Corinna Vinschen wrote:
> > 7. The idea of _mq_recv partial reads is entirely broken.  Given that
> >     the information in the queue consists of header info plus payload,
> >     the entire block has to be read, and then a new block with fixed
> >     header and shortened payload has to be rewritten with bumped priority.
> >     This in turn can only be performed by the AF_UNIX code, unless we
> >     expect knowledge of the AF_UNIX packet layout in the mqueue code.
> The partial read is actually OK as is, since it's comparable to what happens
> on a partial read from a pipe.  I already have AF_UNIX code (on the
> topic/af_unix branch) that deals with that.  A boolean variable _unread
> keeps track of whether there's unread data from a previous partial read.  If
> so, the next read just reads data without expecting a header.

Ok, never mind.

One advantage of the mqueue when utilized as above would be that this
kind of state info is not required.  The content of a packet would
always be self-contained and bumping the priority would automagically
move the packet content to the top of the queue.  But that's just
idle musing at this point.


More information about the Cygwin-developers mailing list