Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/uipc_socket.c
Show First 20 Lines • Show All 1,963 Lines • ▼ Show 20 Lines | if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { | ||||
} else | } else | ||||
goto dontblock; | goto dontblock; | ||||
} | } | ||||
for (; m != NULL; m = m->m_next) | for (; m != NULL; m = m->m_next) | ||||
if (m->m_type == MT_OOBDATA || (m->m_flags & M_EOR)) { | if (m->m_type == MT_OOBDATA || (m->m_flags & M_EOR)) { | ||||
m = so->so_rcv.sb_mb; | m = so->so_rcv.sb_mb; | ||||
goto dontblock; | goto dontblock; | ||||
} | } | ||||
if ((so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING)) == 0 && | if ((so->so_state & (SS_ISCONNECTING | SS_ISCONNECTED | | ||||
(so->so_proto->pr_flags & PR_CONNREQUIRED)) { | SS_ISDISCONNECTING | SS_ISDISCONNECTED)) == 0 && | ||||
(so->so_proto->pr_flags & PR_CONNREQUIRED) != 0) { | |||||
SOCKBUF_UNLOCK(&so->so_rcv); | SOCKBUF_UNLOCK(&so->so_rcv); | ||||
error = ENOTCONN; | error = ENOTCONN; | ||||
goto release; | goto release; | ||||
} | } | ||||
if (uio->uio_resid == 0) { | if (uio->uio_resid == 0) { | ||||
SOCKBUF_UNLOCK(&so->so_rcv); | SOCKBUF_UNLOCK(&so->so_rcv); | ||||
goto release; | goto release; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 2,392 Lines • Show Last 20 Lines |