Download raw body.
gotwebd: get rid of proc.[ch]
On 2023/11/16 22:03:16 +0100, Stefan Sperling <stsp@stsp.name> wrote:
> On Wed, Nov 15, 2023 at 07:46:57PM +0100, Omar Polo wrote:
> > updated diff, this includes the fix to the daemon() call too.
>
> Thanks for working on this! I read through and didn't see anything
> horrible. Ok by me. We'll deal with any fallout that comes up later.
> I will hold off a new release for a few days to give developers some
> time to test it.
>
> > +int
> > +main_compose_sockets(struct gotwebd *env, uint32_t type, int fd,
> > + const void *data, uint16_t len)
> > +{
> > + size_t i;
> > + int ret, d;
> > +
> > + for (i = 0; i < env->nserver; ++i) {
> > + d = -1;
> > + if (fd != -1 && (d = dup(fd)) == -1)
> > + return (-1);
>
> This function does not close fd on error, but closes fd on success.
> It's not a big deal since all callers end up in fatal() if this
> function fails, and this code is only used while loading the
> configuration. But it looks odd when some return paths care
> about closing the file and some don't.
I've committed my original diff and fixed this in a follow-up.
> [...]
> > + if (p[0] != 3) {
> > + if (dup2(p[0], 3) == -1)
>
> This magic number 3 was derived from PROC_GOTWEBD_SOCK_FILENO, right?
> Consider adding a GOTWEBD_SOCK_FILENO constant for it.
also done in a follow-up.
> [[[]]]
> > +#define IMSG_SIZE_CHECK(imsg, p) do { \
> > + if (IMSG_DATA_SIZE(imsg) < sizeof(*p)) \
>
> Could this check even be != sizeof(*p)?
> As far as I can see all messages used by gotwebd are of a fixed size.
IIRC this define is used by other daemons as well and I'd like not to
change its behaviour here.
Now, actually I'd prefer to remove completely its usage. I always get
confused about whether it takes a pointer or the variable directly, and
I've fixed at least a few wrong usage (one was fixed in the diff
itself.)
gotwebd: get rid of proc.[ch]