Messages in this thread | | | Date | Wed, 06 Oct 2004 12:57:50 -0400 | From | Neil Horman <> | Subject | Re: UDP recvmsg blocks after select(), 2.6 bug? |
| |
David S. Miller wrote: > On Wed, 06 Oct 2004 09:31:46 -0600 > Chris Friesen <cfriesen@nortelnetworks.com> wrote: > > >>David S. Miller wrote: >> >> >>>So if select returns true, and another one of your threads >>>reads all the data from the file descriptor, what would you >>>like the behavior to be for the current thread when it calls >>>read? >> >>What about the single-threaded case? > > > Incorrect UDP checksums could cause the read data to > be discarded. We do the copy into userspace and checksum > computation in parallel. This is totally legal and we've > been doing it since 2.4.x first got released. > > Use non-blocking sockets with select()/poll() and be happy.
I think you could also pass the MSG_ERRQUEUE flag to the recvfrom call and receive the errored frame, eliminating the case where errored frames might cause you to block on a read after a good return from a select call. Neil -- /*************************************************** *Neil Horman *Software Engineer *Red Hat, Inc. *nhorman@redhat.com *gpg keyid: 1024D / 0x92A74FA1 *http://pgp.mit.edu ***************************************************/ - 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/
| |