I observe that on one of my machines (IPv6 only system) every time I
run scan/show/repl (and probably others) a DNS query for the A record
of the machines hostname is sent. If a NXDOMAIN comes back everything is
fine, but if the request is lost then the command hangs for a few seconds.
This might be a bug in nmh, the gnu libc, both or neither. I'd like your
opinion on this.
I think this is caused by the following lines in sbr/mts.c
Hm, I see it now. That code was done by me, but I was just converting over
the old code which used gethostbyname().
It seems that getaddrinfo tries to lookup the IPv4 address of the
hostname and then do a reverse lookup to get the FQDN but doesn't
find it in /etc/hosts (because the system is v6 only) and thus
goes on asking the DNS.
So, it's more subtle than that.
It's not asking for the IPv4 address (because we're using PF_UNSPEC);
it's really just trying to get a canonical name for the local host. In
this case it should NOT be done by geting the reverse address; you get
the canonical name as part of the forward query.
I think this is a bug in the libc, because it should use the IPv6
entry in my /etc/hosts.
Well, I think what's messing things up here is the use of AI_CANONNAME.
As for why it's not considering what it's /etc/hosts canonical ... I guess
you'd need to check your libc to see exactly what getaddrinfo is doing.
I think this might also be a bug in nmh, because I don't see why
show would need to now the FQDN of the maschine it is running
on. I expect it to show a message the same no matter from which
computer I'm using it. Also this logic to determine the FQDN might
be a bad default nowadays as most computers have addresses from
private ip ranges via DHCP and garbage in their /etc/hosts.
But I have to admit: I never noticed any problems before.
So, it's doing that to try to get the fully qualified local name.
That's used primarily in address parsing (but it's used in a few places
where I don't know all of the subtlies). Hm, I'm not sure of the right
thing to do here. Anyone else have ideas?
Maybe we should be using AI_ADDRCONFIG? Hey, could you try adding that
to hints.ai_flags and see if that solves your problem?
--Ken
_______________________________________________
Nmh-workers mailing list
Nmh-workers(_at_)nongnu(_dot_)org
https://lists.nongnu.org/mailman/listinfo/nmh-workers