Re: man sendto ENOBUFS desc. wrong

From: Richard B. Johnson
Date: Tue Jul 05 2005 - 13:10:36 EST


On Tue, 5 Jul 2005, Karel Kulhavy wrote:

man send(2):

" ENOBUFS
The output queue for a network interface was full. This
gener- ally indicates that the interface has stopped sending, but may
be caused by transient congestion. (Normally, this does not occur
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
in Linux. Packets are just silently dropped when a device queue
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
overflows.)"
^^^^^^^^^^

Which is not true, because just happened to me with kernel Linux version
2.6.11-gentoo-r9.

Where should I report?

CL<

The `man` pages concatenate send() sendmsg() sendto(), etc. So, what
are you trying to do? If you are using a CONNECTED STREAM socket,
the end-points get perfect data-buffers with nothing dropped, even
if you disconnect the physical wire for quite some time (hours).

In that case, the errors returned are EAGAIN, EBADF, ECONNRESET,
EFAULT, EINTR, EINVAL, ENOTCON, etc. No errors about the interface
are returned because the kernel transparently retries those errors.

Data-grams can be dropped on the floor for any number of reasons
including the phase of the moon. If you are not prepared to handle
this, you must use a CONNECTED STREAM socket. You can't have it
both ways. You either have a perfect data-transmission path with
its associated overhead, or you get a faster transmission but
are not guaranteed anything, including the even one packet gets
to the end-point.


Cheers,
Dick Johnson
Penguin : Linux version 2.6.12 on an i686 machine (5537.79 BogoMips).
Notice : All mail here is now cached for review by Dictator Bush.
98.36% of all statistics are fiction.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/