make sosetopt inform protocols of SOL_SOCKET options being changed.
SCCS-vsn: sys/kern/uipc_socket.c 7.30
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)uipc_socket.c 7.29 (Berkeley) %G%
+ * @(#)uipc_socket.c 7.30 (Berkeley) %G%
* we have to do the receive in sections, and thus risk returning
* a short count if a timeout or signal occurs after we start.
*/
* we have to do the receive in sections, and thus risk returning
* a short count if a timeout or signal occurs after we start.
*/
- while (m == 0 || so->so_rcv.sb_cc < uio->uio_resid &&
+ if (m == 0 || so->so_rcv.sb_cc < uio->uio_resid &&
(so->so_rcv.sb_cc < so->so_rcv.sb_lowat ||
((flags & MSG_WAITALL) && uio->uio_resid <= so->so_rcv.sb_hiwat)))
if (m && (m->m_nextpkt || (m->m_flags & M_EOR) ||
(so->so_rcv.sb_cc < so->so_rcv.sb_lowat ||
((flags & MSG_WAITALL) && uio->uio_resid <= so->so_rcv.sb_hiwat)))
if (m && (m->m_nextpkt || (m->m_flags & M_EOR) ||
#endif
if (so->so_error) {
if (m)
#endif
if (so->so_error) {
if (m)
error = so->so_error;
if ((flags & MSG_PEEK) == 0)
so->so_error = 0;
error = so->so_error;
if ((flags & MSG_PEEK) == 0)
so->so_error = 0;
}
if (so->so_state & SS_CANTRCVMORE) {
if (m)
}
if (so->so_state & SS_CANTRCVMORE) {
if (m)
error = ENOPROTOOPT;
break;
}
error = ENOPROTOOPT;
break;
}
if (error == 0 && so->so_proto && so->so_proto->pr_ctloutput)
(void) ((*so->so_proto->pr_ctloutput)
(PRCO_SETOPT, so, level, optname, &m0));
if (error == 0 && so->so_proto && so->so_proto->pr_ctloutput)
(void) ((*so->so_proto->pr_ctloutput)
(PRCO_SETOPT, so, level, optname, &m0));