aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c30
1 files changed, 8 insertions, 22 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 8d218cf10a81..7b16401b7071 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1953,19 +1953,12 @@ restart:
KASSERT(m != NULL || !sbavail(&so->so_rcv),
("receive: m == %p sbavail == %u",
m, sbavail(&so->so_rcv)));
- if (so->so_error || so->so_rerror) {
+ if (so->so_error) {
if (m != NULL)
goto dontblock;
- if (so->so_error)
- error = so->so_error;
- else
- error = so->so_rerror;
- if ((flags & MSG_PEEK) == 0) {
- if (so->so_error)
- so->so_error = 0;
- else
- so->so_rerror = 0;
- }
+ error = so->so_error;
+ if ((flags & MSG_PEEK) == 0)
+ so->so_error = 0;
SOCKBUF_UNLOCK(&so->so_rcv);
goto release;
}
@@ -2309,7 +2302,7 @@ dontblock:
while (flags & MSG_WAITALL && m == NULL && uio->uio_resid > 0 &&
!sosendallatonce(so) && nextrecord == NULL) {
SOCKBUF_LOCK_ASSERT(&so->so_rcv);
- if (so->so_error || so->so_rerror ||
+ if (so->so_error ||
so->so_rcv.sb_state & SBS_CANTRCVMORE)
break;
/*
@@ -3050,7 +3043,6 @@ sosetopt(struct socket *so, struct sockopt *sopt)
case SO_NOSIGPIPE:
case SO_NO_DDP:
case SO_NO_OFFLOAD:
- case SO_RERROR:
error = sooptcopyin(sopt, &optval, sizeof optval,
sizeof optval);
if (error)
@@ -3272,7 +3264,6 @@ sogetopt(struct socket *so, struct sockopt *sopt)
case SO_NOSIGPIPE:
case SO_NO_DDP:
case SO_NO_OFFLOAD:
- case SO_RERROR:
optval = so->so_options & sopt->sopt_name;
integer:
error = sooptcopyout(sopt, &optval, sizeof optval);
@@ -3292,13 +3283,8 @@ integer:
case SO_ERROR:
SOCK_LOCK(so);
- if (so->so_error) {
- optval = so->so_error;
- so->so_error = 0;
- } else {
- optval = so->so_rerror;
- so->so_rerror = 0;
- }
+ optval = so->so_error;
+ so->so_error = 0;
SOCK_UNLOCK(so);
goto integer;
@@ -3847,7 +3833,7 @@ filt_soread(struct knote *kn, long hint)
kn->kn_flags |= EV_EOF;
kn->kn_fflags = so->so_error;
return (1);
- } else if (so->so_error || so->so_rerror)
+ } else if (so->so_error) /* temporary udp error */
return (1);
if (kn->kn_sfflags & NOTE_LOWAT) {