Mike Silbersack wrote:
On Tue, 10 Feb 2004, Andrew wrote:
The conclusion being that send, sendto and select will never block on a
UDP socket and the man page just doesn't make it too clear. I'm assuming
it is the same for raw sockets.
UNPv1 section 6.3 seems to say that select should work for UDP...Part 2
under "Under What Conditions Is a Descriptor Ready" certainly indicates
that select should work.
Anyway a bug or not, is there a better work around than sleeping? I'm
guessing not...
Thanks,
Andrew
Well, one workaround would be to figure out a way to have the kernel
implement the behavior you desire. :)
I doubt that anyone will put effort into this problem soon; it looks like
it would be quite a large change to the network stack, and we all have
plenty of projects to work on.
Maybe you could figure out where in the kernel the ENOBUFS is occuring,
and then add a tsleep which would be woken when the transmit queue cleared
a bit. That would introduce unexpected blocking, but I can't imagine that
waiting for a few packets to exit the queue would take much time.
I traced it down when this topic came up the first time a couple of
weeks ago. The ENOBUFS happens at the interface output queue when
it is full. You better not put a tsleep in there.
--
Andre
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"