diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -1516,20 +1516,15 @@ wpipe->pipe_buffer.size == 0))) revents |= events & (POLLOUT | POLLWRNORM); - levents = events & - (POLLIN | POLLINIGNEOF | POLLPRI | POLLRDNORM | POLLRDBAND); - if (rpipe->pipe_type & PIPE_TYPE_NAMED && fp->f_flag & FREAD && levents && - fp->f_pipegen == rpipe->pipe_wgen) - events |= POLLINIGNEOF; - - if ((events & POLLINIGNEOF) == 0) { - if (rpipe->pipe_state & PIPE_EOF) { - if (fp->f_flag & FREAD) - revents |= (events & (POLLIN | POLLRDNORM)); - if (wpipe->pipe_present != PIPE_ACTIVE || - (wpipe->pipe_state & PIPE_EOF)) - revents |= POLLHUP; - } + levents = events & (POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND); + if (rpipe->pipe_state & PIPE_EOF && + !(rpipe->pipe_type & PIPE_TYPE_NAMED && fp->f_flag & FREAD && + levents && fp->f_pipegen == rpipe->pipe_wgen)) { + if (fp->f_flag & FREAD) + revents |= (events & (POLLIN | POLLRDNORM)); + if (wpipe->pipe_present != PIPE_ACTIVE || + (wpipe->pipe_state & PIPE_EOF)) + revents |= POLLHUP; } if (revents == 0) { diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -4415,7 +4415,7 @@ revents = 0; else if (!TAILQ_EMPTY(&so->sol_comp)) revents = events & (POLLIN | POLLRDNORM); - else if ((events & POLLINIGNEOF) == 0 && so->so_error) + else if (so->so_error) revents = (events & (POLLIN | POLLRDNORM)) | POLLHUP; else { selrecord(td, &so->so_rdsel); @@ -4435,12 +4435,10 @@ if (so->so_oobmark || (so->so_rcv.sb_state & SBS_RCVATMARK)) revents |= events & (POLLPRI | POLLRDBAND); - if ((events & POLLINIGNEOF) == 0) { - if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { - revents |= events & (POLLIN | POLLRDNORM); - if (so->so_snd.sb_state & SBS_CANTSENDMORE) - revents |= POLLHUP; - } + if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { + revents |= events & (POLLIN | POLLRDNORM); + if (so->so_snd.sb_state & SBS_CANTSENDMORE) + revents |= POLLHUP; } if (so->so_rcv.sb_state & SBS_CANTRCVMORE) revents |= events & POLLRDHUP; diff --git a/sys/sys/poll.h b/sys/sys/poll.h --- a/sys/sys/poll.h +++ b/sys/sys/poll.h @@ -68,7 +68,6 @@ #if __BSD_VISIBLE /* General FreeBSD extension (currently only supported for sockets): */ -#define POLLINIGNEOF 0x2000 /* like POLLIN, except ignore EOF */ #define POLLRDHUP 0x4000 /* half shut down */ #endif diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c --- a/usr.bin/truss/syscalls.c +++ b/usr.bin/truss/syscalls.c @@ -645,7 +645,7 @@ static struct xlat poll_flags[] = { X(POLLSTANDARD) X(POLLIN) X(POLLPRI) X(POLLOUT) X(POLLERR) X(POLLHUP) X(POLLNVAL) X(POLLRDNORM) X(POLLRDBAND) - X(POLLWRBAND) X(POLLINIGNEOF) X(POLLRDHUP) XEND + X(POLLWRBAND) X(POLLRDHUP) XEND }; static struct xlat sigaction_flags[] = {