On Mon, Jan 08, 2018 at 03:50:14PM +0100, Martin Pieuchot wrote:
> ok?
OK bluhm@ with a few remarks.
> @@ -1422,12 +1422,12 @@ somove(struct socket *so, int wait)
>
> /* Receive buffer did shrink by len bytes, adjust oob. */
> state = so->so_state;
> - so->so_state &= ~SS_RCVATMARK;
> + soclrstate(so, SS_RCVATMARK);
> oobmark = so->so_oobmark;
> so->so_oobmark = oobmark > len ? oobmark - len : 0;
> if (oobmark) {
Can we make the "state" also u_int?
> @@ -198,7 +198,7 @@ sonewconn(struct socket *head, int conns
> if (connstatus) {
> sorwakeup(head);
> wakeup(&head->so_timeo);
> - so->so_state |= connstatus;
> + sosetstate(so, connstatus);
> }
> return (so);
> }
"connstatus" should be u_int.
> @@ -112,8 +112,8 @@ sys_socket(struct proc *p, void *v, regi
> fdpunlock(fdp);
> } else {
> if (type & SOCK_NONBLOCK)
> - so->so_state |= SS_NBIO;
> - so->so_state |= ss;
> + sosetstate(so, SS_NBIO);
> + sosetstate(so, ss);
> fp->f_data = so;
> FILE_SET_MATURE(fp, p);
> *retval = fd;
"ss" should be u_int for consistency. And pledge_socket() still
takes the state as signed int.
> @@ -181,7 +181,7 @@ fifo_open(void *v)
> goto bad;
> }
> if (fip->fi_writers == 1) {
> - rso->so_state &= ~(SS_CANTRCVMORE|SS_ISDISCONNECTED);
> + soclrstate(rso, (SS_CANTRCVMORE|SS_ISDISCONNECTED));
> if (fip->fi_readers > 0)
> wakeup(&fip->fi_readers);
> }
There are more () than needed.
> @@ -585,9 +585,9 @@ tcp_attach(struct socket *so, int proto)
> if (tp == NULL) {
> int nofd = so->so_state & SS_NOFDREF; /* XXX */
>
> - so->so_state &= ~SS_NOFDREF; /* don't free the socket yet */
> + soclrstate(so, SS_NOFDREF); /* don't free the socket yet */
> in_pcbdetach(inp);
> - so->so_state |= nofd;
> + sosetstate(so, nofd);
> return (ENOBUFS);
> }
> tp->t_state = TCPS_CLOSED;
nofd should be u_int.