Messages in this thread | | | Date | Sun, 17 Oct 2004 21:33:27 +0200 | From | Buddy Lucas <> | Subject | Re: UDP recvmsg blocks after select(), 2.6 bug? |
| |
On Sun, 17 Oct 2004 20:58:39 +0100, Martijn Sipkema <martijn@entmoot.nl> wrote: > > > > But then I am one of those who thinks it's sane to check for > > EWOULDBLOCK on a nonblocking socket after blocking in select(). > > A POSIX comliant implementation would never do this.
Here's your own quote, from a couple of hundred mails ago:
> According to POSIX:
> A descriptor shall be considered ready for reading when a call to an > input function with O_NONBLOCK clear would not block, whether or not > the function would transfer data successfully.
You concluded from this that, if select() says a descriptor is readable, the subsequent recvmsg() must not block. The point is, from your quote I cannot deduct anything but: a recvmsg() on a descriptor that is readable must not block -- which makes perfect sense.
But unless POSIX also says something about the conservability of "readability" of descriptors, specifically in between select() and recvmsg(), your conclusion is just wrong.
> > Let's just document this and move on to something more important. > > It actually _is_ important. Just implement select() and recvmsg() as > described in the standard.
I am very glad Linux makes sane decisions while trying to adhere to the standards as much as possible.
Cheers, Buddy - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |