From owner-freebsd-net Wed Feb 7 9:14:32 2001 Delivered-To: freebsd-net@freebsd.org Received: from iguana.aciri.org (iguana.aciri.org [192.150.187.36]) by hub.freebsd.org (Postfix) with ESMTP id 3A4C937B4EC for ; Wed, 7 Feb 2001 09:14:13 -0800 (PST) Received: (from rizzo@localhost) by iguana.aciri.org (8.11.1/8.11.1) id f17HEDH75274; Wed, 7 Feb 2001 09:14:13 -0800 (PST) (envelope-from rizzo) From: Luigi Rizzo Message-Id: <200102071714.f17HEDH75274@iguana.aciri.org> Subject: send problem on udp socket... To: net@freebsd.org Date: Wed, 7 Feb 2001 09:14:08 -0800 (PST) X-Mailer: ELM [version 2.4ME+ PL43 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org 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. cheers luigi ----------------------------------+----------------------------------------- Luigi RIZZO, luigi@iet.unipi.it . 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 majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message