Luigi Rizzo wrote:
> 
> Hi,
> 
> just occurred to me that there exists the following feature of
> send/sendmsg and probably also write on UDP sockets, and it would
> be worth documenting.
> 
> When you attempt to send() to an udp socket, the socket buffer
> (which has no function other than bounding the max message size
> for UDP sockets) is just bypassed, and the low-level routine gets
> called. The latter (typically ip_output() or ether_output()) can
> return an ENOBUFS message if some queue fills up down there (typically
> the interface queue), and the error message is passed up.
> 
> Now, the send() manpage is technically correct as it only
> mentions the socket buffer full as the reason for blocking,
> but in my opinion the above is not _that_ obvious and it would
> be worth documenting.
> 
> As a matter of fact, i wonder if it would be a good idea to
> try and improve this behaviour by letting sosend() do a tsleep()
> on the device/subsystem reporting the failure, and have the
> latter issue a wakeup when space frees again. The only thing
> is, i believe this has some odd ramifications with handling
> select/poll, and might break some software that does not
> handle blocking send() on UDP sockets.

this is not just UDP but any packet based protocol.
ping(8)(1?) uses this fact when you do a ping -f.
if it get's a ENOBUFS, it does a usleep and backs off a bit.

don't change it as it's teh expected behaviour.
(well, at least I expect it....)


> 
>         cheers
>         luigi
> ----------------------------------+-----------------------------------------
>  Luigi RIZZO, [EMAIL PROTECTED]  . ACIRI/ICSI (on leave from Univ. di Pisa)
>  http://www.iet.unipi.it/~luigi/  . 1947 Center St, Berkeley CA 94704
>  Phone: (510) 666 2927
> ----------------------------------+-----------------------------------------
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-net" in the body of the message

-- 
      __--_|\  Julian Elischer
     /       \ [EMAIL PROTECTED]
    (   OZ    ) World tour 2000-2001
---> X_.---._/  
            v


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to