… | |
… | |
34 | use Socket qw(AF_INET SOCK_DGRAM SOCK_STREAM); |
34 | use Socket qw(AF_INET SOCK_DGRAM SOCK_STREAM); |
35 | |
35 | |
36 | use AnyEvent (); |
36 | use AnyEvent (); |
37 | use AnyEvent::Util qw(AF_INET6); |
37 | use AnyEvent::Util qw(AF_INET6); |
38 | |
38 | |
39 | our $VERSION = 4.45; |
39 | our $VERSION = 4.452; |
40 | |
40 | |
41 | our @DNS_FALLBACK = (v208.67.220.220, v208.67.222.222); |
41 | our @DNS_FALLBACK = (v208.67.220.220, v208.67.222.222); |
42 | |
42 | |
43 | =item AnyEvent::DNS::a $domain, $cb->(@addrs) |
43 | =item AnyEvent::DNS::a $domain, $cb->(@addrs) |
44 | |
44 | |
… | |
… | |
503 | 11 => sub { ((join ".", unpack "C4", $_), unpack "C a*", substr $_, 4) }, # wks |
503 | 11 => sub { ((join ".", unpack "C4", $_), unpack "C a*", substr $_, 4) }, # wks |
504 | 12 => sub { local $ofs = $ofs - length; _dec_name }, # ptr |
504 | 12 => sub { local $ofs = $ofs - length; _dec_name }, # ptr |
505 | 13 => sub { unpack "C/a* C/a*", $_ }, # hinfo |
505 | 13 => sub { unpack "C/a* C/a*", $_ }, # hinfo |
506 | 15 => sub { local $ofs = $ofs + 2 - length; ((unpack "n", $_), _dec_name) }, # mx |
506 | 15 => sub { local $ofs = $ofs + 2 - length; ((unpack "n", $_), _dec_name) }, # mx |
507 | 16 => sub { unpack "(C/a*)*", $_ }, # txt |
507 | 16 => sub { unpack "(C/a*)*", $_ }, # txt |
508 | 28 => sub { AnyEvent::Socket::format_address ($_) }, # aaaa |
508 | 28 => sub { AnyEvent::Socket::format_ipv6 ($_) }, # aaaa |
509 | 33 => sub { local $ofs = $ofs + 6 - length; ((unpack "nnn", $_), _dec_name) }, # srv |
509 | 33 => sub { local $ofs = $ofs + 6 - length; ((unpack "nnn", $_), _dec_name) }, # srv |
510 | 35 => sub { # naptr |
510 | 35 => sub { # naptr |
511 | # requires perl 5.10, sorry |
511 | # requires perl 5.10, sorry |
512 | my ($order, $preference, $flags, $service, $regexp, $offset) = unpack "nn C/a* C/a* C/a* .", $_; |
512 | my ($order, $preference, $flags, $service, $regexp, $offset) = unpack "nn C/a* C/a* C/a* .", $_; |
513 | local $ofs = $ofs + $offset - length; |
513 | local $ofs = $ofs + $offset - length; |
… | |
… | |
1284 | if (@rr) { |
1284 | if (@rr) { |
1285 | $depth-- |
1285 | $depth-- |
1286 | or return $do_search->(); # cname chain too long |
1286 | or return $do_search->(); # cname chain too long |
1287 | |
1287 | |
1288 | $cname = 1; |
1288 | $cname = 1; |
1289 | $name = $rr[0][3]; |
1289 | $name = lc $rr[0][3]; |
1290 | |
1290 | |
1291 | } elsif ($cname) { |
1291 | } elsif ($cname) { |
1292 | # follow the cname |
1292 | # follow the cname |
1293 | return $do_req->(); |
1293 | return $do_req->(); |
1294 | |
1294 | |