On Tue, Aug 08, 2023 at 10:40:46PM +0200, Alexander Bluhm wrote: > On Fri, Aug 04, 2023 at 12:38:23AM +0300, Vitaliy Makkoveev wrote: > > @@ -1856,6 +1856,9 @@ sosetopt(struct socket *so, int level, i > > case SO_SNDLOWAT: > > case SO_RCVLOWAT: > > { > > + struct sockbuf *sb = (optname == SO_SNDBUF || > > + optname == SO_SNDLOWAT ? > > + &so->so_snd : &so->so_rcv); > > @@ -1910,6 +1896,8 @@ sosetopt(struct socket *so, int level, i > > case SO_SNDTIMEO: > > case SO_RCVTIMEO: > > { > > + struct sockbuf *sb = (optname == SO_SNDTIMEO ? > > + &so->so_snd : &so->so_rcv); > > Would it be nicer to set sb in the switch (optname) at the begining? > > struct sockbuf *sb = NULL; > > switch (optname) { > case SO_SNDBUF: > case SO_SNDLOWAT: > case SO_SNDTIMEO: > sb = &so->so_snd; > break; > case SO_RCVBUF: > case SO_RCVLOWAT: > case SO_RCVTIMEO: > sb = &so->so_rcv; > break; > case SO_BINDANY: > ... > } > > Anyway, OK bluhm@ >
I think it's better to merge SO_BINDANY cases from both switch blocks. This time SO_LINGER case is separated, so there is no reason for dedicated switch block. Index: sys/kern/uipc_socket.c =================================================================== RCS file: /cvs/src/sys/kern/uipc_socket.c,v retrieving revision 1.307 diff -u -p -r1.307 uipc_socket.c --- sys/kern/uipc_socket.c 3 Aug 2023 09:49:08 -0000 1.307 +++ sys/kern/uipc_socket.c 8 Aug 2023 21:35:50 -0000 @@ -1800,13 +1800,6 @@ sosetopt(struct socket *so, int level, i error = ENOPROTOOPT; } else { switch (optname) { - case SO_BINDANY: - if ((error = suser(curproc)) != 0) /* XXX */ - return (error); - break; - } - - switch (optname) { case SO_LINGER: if (m == NULL || m->m_len != sizeof (struct linger) || @@ -1824,6 +1817,9 @@ sosetopt(struct socket *so, int level, i break; case SO_BINDANY: + if ((error = suser(curproc)) != 0) /* XXX */ + return (error); + /* FALLTHROUGH */ case SO_DEBUG: case SO_KEEPALIVE: case SO_USELOOPBACK: