Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Sep 2021 09:29:24 -0700
From:      John Baldwin <jhb@FreeBSD.org>
To:        Mark Johnston <markj@FreeBSD.org>, src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   Re: git: b864b67a0d19 - main - socket: Do not include control messages in FIONREAD return value
Message-ID:  <270ac6c6-1fdf-879a-cbea-ef43200ef12a@FreeBSD.org>
In-Reply-To: <202109122039.18CKdpwW094531@gitrepo.freebsd.org>
References:  <202109122039.18CKdpwW094531@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 9/12/21 1:39 PM, Mark Johnston wrote:
> The branch main has been updated by markj:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=b864b67a0d197f59ecf6698940600956ceee2cae
> 
> commit b864b67a0d197f59ecf6698940600956ceee2cae
> Author:     Mark Johnston <markj@FreeBSD.org>
> AuthorDate: 2021-09-12 20:05:49 +0000
> Commit:     Mark Johnston <markj@FreeBSD.org>
> CommitDate: 2021-09-12 20:39:44 +0000
> 
>      socket: Do not include control messages in FIONREAD return value
>      
>      Some system software expects to be able to read at least the number of
>      bytes returned by FIONREAD.  When control messages are counted in this
>      return value, this assumption is violated.  Follow Linux and OpenBSD
>      here (as well as our own kevent(EVFILT_READ)) and only return the number
>      of data bytes available.
>      
>      Reported by:    avg
>      MFC after:      2 weeks

In a somewhat similar vein, it would be nice to eventually have new ioctls
to know how much data and control are available in the next message for
datagram-oriented sockets.  Right now if you are working with a datagram
socket with variable-sized messages there's no good way to know how big the
next message is (to resize a read buffer) as FIONREAD can count multiple
messages.  There's also no way at all to cope with control messages aside
from retrying with some naive algorithm like doubling the size if MSG_CTRUNC
is set, but that also requires always using MSG_PEEK so that you always
end up reading a message at least twice.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?270ac6c6-1fdf-879a-cbea-ef43200ef12a>