NAME

    AnyEvent::DNS::EtcHosts - Use /etc/hosts before DNS

SYNOPSIS

        use AnyEvent::DNS::EtcHosts;
    
        use AnyEvent::DNS;
        my $cv = AE::cv;
        AnyEvent::DNS::any 'example.com', sub {
            say foreach map { $_->[4] } grep { $_->[1] =~ /^(a|aaaa)$/ } @_;
            $cv->send;
        };
    
        use AnyEvent::Socket;
        my $cv = AE::cv;
        AnyEvent::Socket::resolve_sockaddr $domain, $service, $proto, $family, undef, sub {
            say foreach map { format_address((AnyEvent::Socket::unpack_sockaddr($_->[3]))[1]) } @_;
            $cv->send;
        };

DESCRIPTION

    AnyEvent::DNS::EtcHosts changes AnyEvent::DNS behavior. The /etc/hosts
    file is searched before DNS, so it is possible to override DNS entries.

    The DNS lookups are emulated. This resolver returns the standard DNS
    reply based on /etc/hosts file rather than real DNS.

    You can choose a different file by changing PERL_ANYEVENT_HOSTS
    environment variable.

    This module also disables the original AnyEvent::Socket's helper
    function which reads /etc/hosts file after the DNS entry was not found.
    It prevents reading this file twice.

    The AnyEvent::Socket resolver searches IPv4 and IPv6 addresses
    separately. If you don't want to check the addresses in DNS, both IPv4
    and IPv6 addresses should be placed in /etc/hosts or the protocol
    family should be set explicitly for resolve_sockaddr function.

SEE ALSO

    AnyEvent::DNS, AnyEvent::Socket.

BUGS

    This module might be incompatible with further versions of AnyEvent
    module.

    If you find the bug or want to implement new features, please report it
    at https://github.com/dex4er/perl-AnyEvent-DNS-EtcHosts/issues

    The code repository is available at
    http://github.com/dex4er/perl-AnyEvent-DNS-EtcHosts

AUTHORS

    Piotr Roszatycki <dexter@cpan.org>

    Helper functions taken from AnyEvent::Socket 7.05 by Marc Lehmann
    <schmorp@schmorp.de>

LICENSE

    Copyright (c) 2013-2014, 2023 Piotr Roszatycki <dexter@cpan.org>.

    This is free software; you can redistribute it and/or modify it under
    the same terms as perl itself.

    See http://dev.perl.org/licenses/artistic.html