Lines 4428-4434
sopoll_generic(struct socket *so, int events, struct ucred *active_cred,
Link Here
|
4428 |
revents = 0; |
4428 |
revents = 0; |
4429 |
else if (!TAILQ_EMPTY(&so->sol_comp)) |
4429 |
else if (!TAILQ_EMPTY(&so->sol_comp)) |
4430 |
revents = events & (POLLIN | POLLRDNORM); |
4430 |
revents = events & (POLLIN | POLLRDNORM); |
4431 |
else if ((events & POLLINIGNEOF) == 0 && so->so_error) |
4431 |
else if (so->so_error) |
4432 |
revents = (events & (POLLIN | POLLRDNORM)) | POLLHUP; |
4432 |
revents = (events & (POLLIN | POLLRDNORM)) | POLLHUP; |
4433 |
else { |
4433 |
else { |
4434 |
selrecord(td, &so->so_rdsel); |
4434 |
selrecord(td, &so->so_rdsel); |
Lines 4448-4459
sopoll_generic(struct socket *so, int events, struct ucred *active_cred,
Link Here
|
4448 |
if (so->so_oobmark || |
4448 |
if (so->so_oobmark || |
4449 |
(so->so_rcv.sb_state & SBS_RCVATMARK)) |
4449 |
(so->so_rcv.sb_state & SBS_RCVATMARK)) |
4450 |
revents |= events & (POLLPRI | POLLRDBAND); |
4450 |
revents |= events & (POLLPRI | POLLRDBAND); |
4451 |
if ((events & POLLINIGNEOF) == 0) { |
4451 |
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { |
4452 |
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { |
4452 |
revents |= events & (POLLIN | POLLRDNORM); |
4453 |
revents |= events & (POLLIN | POLLRDNORM); |
4453 |
if (so->so_snd.sb_state & SBS_CANTSENDMORE) |
4454 |
if (so->so_snd.sb_state & SBS_CANTSENDMORE) |
4454 |
revents |= POLLHUP; |
4455 |
revents |= POLLHUP; |
|
|
4456 |
} |
4457 |
} |
4455 |
} |
4458 |
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) |
4456 |
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) |
4459 |
revents |= events & POLLRDHUP; |
4457 |
revents |= events & POLLRDHUP; |