Date: Fri, 2 Jan 2004 21:41:15 -0800 From: "David G. Lawrence" <dg@dglawrence.com> To: Alfred Perlstein <alfred@freebsd.org> Cc: hackers@freebsd.org Subject: Re: [PATCH] sendfile erroniously returns ENOTCONN. Message-ID: <20040103054115.GV56722@nexus.dglawrence.com> In-Reply-To: <20040103005338.GU9623@elvis.mu.org> References: <20040103005338.GU9623@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> sendfile(2) returns ENOTCONN when the remote side has disconnected instead > of EPIPE. Can this fix be applied? Is there a reason for it being the > way it is? I know EPIPE can cause SIGPIPE which can cause problems, but > the error here is incorrect, and considering that the manpage mentions > EPIPE as a possible error... is this perhaps due to a change in the > socket flags API? I know the problem is on 4.x and 5.x. > > Index: uipc_syscalls.c > =================================================================== > RCS file: /home/ncvs/src/sys/kern/uipc_syscalls.c,v > retrieving revision 1.162 > diff -u -r1.162 uipc_syscalls.c > --- uipc_syscalls.c 28 Dec 2003 08:57:08 -0000 1.162 > +++ uipc_syscalls.c 2 Jan 2004 21:56:10 -0000 > @@ -1697,10 +1697,6 @@ > error = EINVAL; > goto done; > } > - if ((so->so_state & SS_ISCONNECTED) == 0) { > - error = ENOTCONN; > - goto done; > - } > if (uap->offset < 0) { > error = EINVAL; > goto done; sendfile(8) tries to maintain compatibility with sosend as much as is reasonable. ENOTCONN is the appropriate error to return if the socket isn't connected. sosend checks SS_CANTSENDMORE prior to the check for SS_ISCONNECTED, however, and returns EPIPE in that case. Perhaps sendfile should be changed to do the same (just a though - I'm not proposing that this be done). Removing the check entirely seems clearly wrong, however. -DG David G. Lawrence President Download Technologies, Inc. - http://www.downloadtech.com - (866) 399 8500 TeraSolutions, Inc. - http://www.terasolutions.com - (888) 346 7175 The FreeBSD Project - http://www.freebsd.org Pave the road of life with opportunities.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040103054115.GV56722>