Date: Mon, 10 Mar 2003 18:23:18 +1100 From: Peter Jeremy <peterjeremy@optushome.com.au> To: Sean Chittenden <sean@chittenden.org> Cc: arch@FreeBSD.ORG Subject: Re: Should sendfile() to return EAGAIN? [patch] Message-ID: <20030310072318.GA3343@cirb503493.alcatel.com.au> In-Reply-To: <20030309214638.GN79234@perrin.int.nxad.com> References: <20030309135037.GK79234@perrin.int.nxad.com> <Pine.BSF.4.21.0303092026380.85235-100000@is> <20030309214638.GN79234@perrin.int.nxad.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Mar 09, 2003 at 01:46:38PM -0800, Sean Chittenden wrote: >Eh, well, I vacillate on this topic, but there is something to be said >for source compatibility. Using EAGAIN requires no changes to >existing code. Returning ENOBUFS does require a change to existing >code. I support source compatibility as a guideline but not as a hard-and-fast rule. This wouldn't be the first time that source compatability has been broken and won't be the last time. In any case, that last "does" should be "may" - some applications may no care. Looking at FreeBSD, the only standard application that uses sendfile(2) is ftpd(8) - and it doesn't care what the actual errno is. The libc_r wrapper would need to be modified though and there may be ports that use sendfile(2). > By the same token, it seems more correct to me >to signify to the app that the OS is maxed (ENOBUFS) as opposed to the >client being maxed (EAGAIN). ::shrug:: The descriptions of the errors (from intro(2)) are: 35 EAGAIN Resource temporarily unavailable. This is a temporary condi- tion and later calls to the same routine may complete normally. 55 ENOBUFS No buffer space available. An operation on a socket or pipe was not performed because the system lacked sufficient buffer space or because a queue was full. Whilst both errors cover the situation, "ENOBUFS" provides more information to the caller and I would therefore consider it as the preferred error. Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030310072318.GA3343>