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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to