ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/DNS.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/DNS.pm (file contents):
Revision 1.36 by root, Wed May 28 21:07:07 2008 UTC vs.
Revision 1.37 by root, Thu May 29 00:30:15 2008 UTC

33 33
34use Socket qw(AF_INET SOCK_DGRAM SOCK_STREAM); 34use Socket qw(AF_INET SOCK_DGRAM SOCK_STREAM);
35 35
36use AnyEvent (); 36use AnyEvent ();
37use AnyEvent::Handle (); 37use AnyEvent::Handle ();
38use AnyEvent::Util qw(AF_INET6);
38 39
39our @DNS_FALLBACK = (v208.67.220.220, v208.67.222.222); 40our @DNS_FALLBACK = (v208.67.220.220, v208.67.222.222);
40 41
41=item AnyEvent::DNS::a $domain, $cb->(@addrs) 42=item AnyEvent::DNS::a $domain, $cb->(@addrs)
42 43
147 my ($ip, $cb) = @_; 148 my ($ip, $cb) = @_;
148 149
149 $ip = AnyEvent::Socket::parse_address ($ip) 150 $ip = AnyEvent::Socket::parse_address ($ip)
150 or return $cb->(); 151 or return $cb->();
151 152
152 if (4 == length $ip) { 153 my $af = AnyEvent::Socket::address_family ($ip);
154
155 if ($af == AF_INET) {
153 $ip = join ".", (reverse split /\./, $ip), "in-addr.arpa."; 156 $ip = join ".", (reverse split /\./, $ip), "in-addr.arpa.";
157 } elsif ($af == AF_INET6) {
158 $ip = join ".", (reverse split //, unpack "H*", $ip), "ip6.arpa.";
154 } else { 159 } else {
155 $ip = join ".", (reverse split //, unpack "H*", $ip), "ip6.arpa."; 160 return $cb->();
156 } 161 }
157 162
158 resolver->resolve ($ip => "ptr", sub { 163 resolver->resolve ($ip => "ptr", sub {
159 $cb->(map $_->[3], @_); 164 $cb->(map $_->[3], @_);
160 }); 165 });

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines