… | |
… | |
14 | |
14 | |
15 | $Event::DIED = sub { |
15 | $Event::DIED = sub { |
16 | Event::verbose_exception_handler(@_); |
16 | Event::verbose_exception_handler(@_); |
17 | #Event::unloop_all(); |
17 | #Event::unloop_all(); |
18 | }; |
18 | }; |
19 | |
|
|
20 | $PApp::SQL::DBH = PApp::SQL::connect_cached __FILE__, "DBI:mysql:netgeo" or die; |
|
|
21 | |
19 | |
22 | package Whois; |
20 | package Whois; |
23 | |
21 | |
24 | use PApp::SQL; |
22 | use PApp::SQL; |
25 | use Coro::Event; |
23 | use Coro::Event; |
… | |
… | |
47 | |
45 | |
48 | my $st = sql_exec \($id, $whois), |
46 | my $st = sql_exec \($id, $whois), |
49 | "select id, whois from whois |
47 | "select id, whois from whois |
50 | where nic = ? and query = ?", |
48 | where nic = ? and query = ?", |
51 | $self->{name}, $query; |
49 | $self->{name}, $query; |
52 | |
|
|
53 | Coro::cede; |
|
|
54 | |
50 | |
55 | unless ($st->fetch) { |
51 | unless ($st->fetch) { |
56 | my $guard = $self->{maxjobs}->guard; |
52 | my $guard = $self->{maxjobs}->guard; |
57 | my $timeout = 5; |
53 | my $timeout = 5; |
58 | |
54 | |
… | |
… | |
234 | having ip0 <= ? |
230 | having ip0 <= ? |
235 | order by ip1 |
231 | order by ip1 |
236 | limit 1", |
232 | limit 1", |
237 | $_ip, $_ip; |
233 | $_ip, $_ip; |
238 | |
234 | |
239 | Coro::cede; |
|
|
240 | |
|
|
241 | unless ($st->fetch) { |
235 | unless ($st->fetch) { |
242 | my ($arin, $ripe, $apnic); |
236 | my ($arin, $ripe, $apnic); |
243 | |
237 | |
244 | $whois = $WHOIS{APNIC}->ip_request($ip) |
238 | $whois = $WHOIS{APNIC}->ip_request($ip) |
245 | || $WHOIS{RIPE} ->ip_request($ip) |
239 | || $WHOIS{RIPE} ->ip_request($ip) |