Hi, thanks for your interest!

On Tue, Mar 06, 2012 at 08:04:03PM +0100, Piotr Roszatycki 
<piotr.roszaty...@gmail.com> wrote:
> Yesterday I noticed, that AnyEvent::Socket::resolve_sockaddr works
> different than on every Linux box

That's not a true statement (as you should be well aware of :).

> and it lookups DNS even if address is in /etc/hosts.

Yes, that's what it should do.

> The most default configuration of Name Service Switch:

AnyEvent doesn't implement nss indeed, AnyEvent implements DNS lookups.

> The order of resolving a socket address is important because
> /etc/hosts works even if i.e. nameserver is unavailable (problem with

That is what indeed should happen - does it not?

> possible local overring (spoofing) some addresses outside our network.

No, that's not the purpose of /etc/hosts - the purpose of /etc/hosts is to
bootstrap the box until DNS is available, then DNS takes over.

See hosts(5), which is liekly identical on your system:

       In modern systems, even though the host table has been superseded
       by DNS, it is still widely used for:

       bootstrapping Most systems have a small host table containing the
              name and address information for important hosts on the
              local network.  This is useful when DNS is not running, for
              example during system bootup.

       NIS Sites that use NIS use the host table as input to the NIS host
              database.  Even though NIS can be used with DNS, most NIS
              sites still use the host table with an entry for all local
              hosts as a backup.

       isolated nodes Very small sites that are isolated from the network
              use the host table instead of DNS.  If the local information
              rarely changes, and the network is not connected to the
              Internet, DNS offers little advantage.

AnyEvent supports all of these. If it doesn't work, then there is a bug.

> AnyEvent works differently: it uses DNS even if address is already
> found in /etc/hosts.

AnyEvent looks up via DNS, then via /etc/hosts, as it should do,
because /etc/hosts doesn't have enough information (it's not a DNS
replacement). It is used as a fallback when DNS fails, or should be at
least.

> some $ENV{PERL_ANYEVENT_*} settings could disable mandatory DNS
> lookup.

DNS isn't mandatory, AnyEvent supports /etc/hosts, or at least, I have
no evidence that it doesn't do so. Maybe you used the wrong syntax for
/etc/hosts or AnyEvent couldn't parse your entry for other reasons? OR
maybe you had a matching entry in DNS?

> Is it possible to change the default AnyEvent's behavior and make some
> applications working without DNS?

Since AnyEvent already works that way, there doesn't seem to be a need
to change anything, but there is always the possibility that something
goes unexpectedly wrong - however, it seems to me that this is a case of
misunderstanding the purpose of /etc/hosts.

So, if /etc/hosts don't work as a fallback, then could you send me
your /etc/hosts and a small snippet that fails to resolve the hostname
properly?

Thanks a lot!

-- 
                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schm...@schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\

_______________________________________________
anyevent mailing list
anyevent@lists.schmorp.de
http://lists.schmorp.de/mailman/listinfo/anyevent

Reply via email to