"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: remove host, host_v4 and host_v6; rename host_dns -> host
To:
Omar Polo <op@omarpolo.com>
Cc:
gameoftrees@openbsd.org
Date:
Mon, 29 May 2023 19:15:19 +0200

Download raw body.

Thread
On Mon, May 29, 2023 at 06:57:33PM +0200, Omar Polo wrote:
> On 2023/05/29 18:49:42 +0200, Stefan Sperling <stsp@stsp.name> wrote:
> > On Mon, May 29, 2023 at 06:35:02PM +0200, Omar Polo wrote:
> > > This is an attempt at simplifying how host() works.  host() is used in
> > > the configuration file via get_addrs() to prepare a struct address
> > > after a "listen on" directive
> > > 
> > > The current code first tries to resolve it as an ipv4 address via
> > > inet_pton(), then as an ipv6 address using getaddrinfo() with
> > > AI_NUMERICHOST, then as an interface name and finally as a name to
> > > resolve via getaddrinfo() again.
> > > 
> > > Instead, scratch host(), host_v4() and host_v6() and rename host_dns()
> > > to host().  It preserve the lookup via interface name, and then uses
> > > getaddrinfo() only once wich already knows how to deal with IPv4/v6
> > > literals and resolving addresses too.
> > > 
> > > ok?
> > 
> > Makes sense to me, ok.
> 
> Thanks, committed.
> 
> one small bonus: use AF_UNSPEC instead of PF_UNSPEC and use
> SOCK_STREAM instead of SOCK_DGRAM in the getaddrinfo call.
> 
> ok?

Yes.

> diff /home/op/w/gotacl
> commit - abf3e3f40c20ebf4efdce3c7e83efe11d0065ed0
> path + /home/op/w/gotacl
> blob - d01669e79c40ee6a64a1ed544069b368ac00bac0
> file + gotwebd/parse.y
> --- gotwebd/parse.y
> +++ gotwebd/parse.y
> @@ -1011,8 +1011,8 @@ host(const char *s, struct server *new_srv, int max,
>  		return (cnt);
>  
>  	memset(&hints, 0, sizeof(hints));
> -	hints.ai_family = PF_UNSPEC;
> -	hints.ai_socktype = SOCK_DGRAM; /* DUMMY */
> +	hints.ai_family = AF_UNSPEC;
> +	hints.ai_socktype = SOCK_STREAM; /* DUMMY */
>  	hints.ai_flags = AI_ADDRCONFIG;
>  	error = getaddrinfo(s, NULL, &hints, &res0);
>  	if (error == EAI_AGAIN || error == EAI_NODATA || error == EAI_NONAME)
> 
>