Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Oct 2008 20:48:43 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/kern uipc_socket.c
Message-ID:  <alpine.BSF.1.10.0810082047220.60960@fledge.watson.org>
In-Reply-To: <200810081114.40433.jhb@freebsd.org>
References:  <200810072058.m97Kw3q0073534@repoman.freebsd.org> <200810071736.50999.jhb@freebsd.org> <alpine.BSF.1.10.0810080714290.91071@fledge.watson.org> <200810081114.40433.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 8 Oct 2008, John Baldwin wrote:

>>>>   In soreceive_dgram, when a 0-length buffer is passed into recv(2) and
>>>>   no data is ready, return 0 rather than blocking or returning EAGAIN.
>>>>   This is consistent with the behavior of soreceive_generic (soreceive)
>>>>   in earlier versions of FreeBSD, and restores this behavior for UDP.
..
>>
>> Yes, I agree it's odd, and I'm not sure I like it.  I discovered the 
>> problem while writing edge-case regression tests for socket receive to 
>> better exercise soreceive_dgram, at first concluding it was a bug in 
>> soreceive_generic!  My feeling, though, is that I should leave behavior 
>> "compatible" for 7.1, and perhaps we should change it for 7.2.
>
> Ok, so I guess you will revert this from HEAD after the MFC?

That and modify soreceive_generic() to do the same thing in the same 
circumstances -- soreceive_dgram() falls back on soreceive_generic() for any 
non-fast path (complicated) cases, so consistency of semantics is quite 
important.

Robert N M Watson
Computer Laboratory
University of Cambridge



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.1.10.0810082047220.60960>