Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Jan 2004 16:53:38 -0800
From:      Alfred Perlstein <alfred@freebsd.org>
To:        dg@freebsd.org
Cc:        hackers@freebsd.org
Subject:   [PATCH] sendfile erroniously returns ENOTCONN.
Message-ID:  <20040103005338.GU9623@elvis.mu.org>

next 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;


-- 
- Alfred Perlstein
- Research Engineering Development Inc.
- email: bright@mu.org cell: 408-480-4684



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040103005338.GU9623>