From: Vincent Pit Date: Sat, 10 Mar 2012 11:01:40 +0000 (+0100) Subject: Restyle Xchat::XPI::Net X-Git-Url: http://git.vpit.fr/?p=perl%2Fscripts%2Fxchat.git;a=commitdiff_plain;h=5348c2908f450bcbe36e5ec2bf6be4eab21df021 Restyle Xchat::XPI::Net --- diff --git a/Xchat/XPI/Net.pm b/Xchat/XPI/Net.pm index ec5ba09..9c83b14 100644 --- a/Xchat/XPI/Net.pm +++ b/Xchat/XPI/Net.pm @@ -25,24 +25,30 @@ BEGIN { } sub resolve { - my ($host, $callback) = @_[0, 1]; - return unless $host && $callback; - my $args = $_[2]; + my ($host, $callback, $args) = @_; + return unless $host and $callback; + my $sock = $res->bgsend($host); return unless $sock; $sock->autoflush(1); - my $hook = Xchat::hook_fd($sock, \&_dns_recv, { flags => FD_READ, data => [ $callback, $args ] } ); - return $hook; + + return Xchat::hook_fd($sock, \&_dns_recv, { + flags => FD_READ, + data => [ $callback, $args ], + }); } sub _dns_recv { - my $fd = $_[0]; + my $fh = $_[0]; my ($callback, $args) = @{$_[2]}; - my $p = $res->bgread($fd); - $fd->shutdown(2); - close $fd; - undef $fd; - &$callback($p, $args); + + my $p = $res->bgread($fh); + $fh->shutdown(2); + close $fh; + undef $fh; + + $callback->($p, $args); + return REMOVE; } @@ -52,25 +58,26 @@ my %whois_servers = ( arpa => 'whois.arin.net', # mil => 'whois.nic.mil', }, - ipv4 => { default => 'whois.ripe.net' }, - ipv6 => { default => 'whois.6bone.net' } + ipv4 => { default => 'whois.ripe.net' }, + ipv6 => { default => 'whois.6bone.net' }, ); sub whois { - my ($host, $callback) = @_[0, 1]; - return unless $host && $callback; - my $args = $_[2]; + my ($host, $callback, $args) = @_; + return unless $host and $callback; + my $server; if ($host =~ /^\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\/\d{1,2})?$/) { $server = $whois_servers{ipv4}{default}; } elsif ($host =~ /^\s*[\d:]*(\/\d{1,2})?\s*$/) { $server = $whois_servers{ipv6}{default}; } elsif ($host =~ /([^\.]+)\.+([a-z]+)\.*$/) { - $host = $1.'.'.$2; + $host = $1 . '.' . $2; $server = $whois_servers{domain}{$2}; - $server = $whois_servers{domain}{default} if !$server; + $server = $whois_servers{domain}{default} unless $server; } return unless $server; + my $hook; # resolve($server, \&_whois_send, [ \$hook, $host, $callback, $args ] ); @@ -87,23 +94,31 @@ sub whois { my $sock = IO::Socket::INET->new( PeerAddr => $server, PeerPort => 43, - Proto => 'tcp' - ) or return; + Proto => 'tcp', + ); + return unless $sock; $sock->autoflush(1); + print $sock "$host\x0D\x0A"; $sock->shutdown(1); # stop writing - $hook = Xchat::hook_fd($sock, \&_whois_recv, { flags => FD_READ, data => [ $callback, $args ] } ); - return $hook; + + return Xchat::hook_fd($sock, \&_whois_recv, { + flags => FD_READ, + data => [ $callback, $args ], + }); } sub _whois_recv { - my $fd = $_[0]; + my $fh = $_[0]; my ($callback, $args) = @{$_[2]}; - my $raw = do { local $/; <$fd>; }; - $fd->shutdown(2); - close $fd; - undef $fd; - &$callback($raw, $args); + + my $raw = do { local $/; <$fh>; }; + $fh->shutdown(2); + close $fh; + undef $fh; + + $callback->($raw, $args); + return REMOVE; }