ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/myhttpd/netgeo.pl
(Generate patch)

Comparing Coro/myhttpd/netgeo.pl (file contents):
Revision 1.5 by root, Tue Aug 28 02:43:02 2001 UTC vs.
Revision 1.8 by root, Fri Sep 28 16:35:00 2001 UTC

6use Fcntl; 6use Fcntl;
7 7
8use Coro; 8use Coro;
9use Coro::Event; 9use Coro::Event;
10use Coro::Semaphore; 10use Coro::Semaphore;
11use Coro::SemaphoreSet;
11use Coro::Socket; 12use Coro::Socket;
13
14use BerkeleyDB;
12 15
13$Event::DIED = sub { 16$Event::DIED = sub {
14 Event::verbose_exception_handler(@_); 17 Event::verbose_exception_handler(@_);
15 #Event::unloop_all(); 18 #Event::unloop_all();
16}; 19};
201 $whois; 204 $whois;
202} 205}
203 206
204package netgeo; 207package netgeo;
205 208
209use Socket;
206use BerkeleyDB; 210use BerkeleyDB;
207use Socket;
208 211
209sub ip2int($) { 212sub ip2int($) {
210 unpack "N", inet_aton $_[0]; 213 unpack "N", inet_aton $_[0];
211} 214}
212 215
218 221
219$WHOIS{ARIN} = new Whois::ARIN ARIN => "whois.arin.net", maxjobs => 12; 222$WHOIS{ARIN} = new Whois::ARIN ARIN => "whois.arin.net", maxjobs => 12;
220$WHOIS{RIPE} = new Whois::RIPE RIPE => "whois.ripe.net", maxjobs => 20; 223$WHOIS{RIPE} = new Whois::RIPE RIPE => "whois.ripe.net", maxjobs => 20;
221$WHOIS{APNIC} = new Whois::RIPE APNIC => "whois.apnic.net", maxjobs => 20; 224$WHOIS{APNIC} = new Whois::RIPE APNIC => "whois.apnic.net", maxjobs => 20;
222 225
226$whoislock = new Coro::SemaphoreSet;
227
223sub ip_request { 228sub ip_request {
224 my $ip = $_[0]; 229 my $ip = $_[0];
230
231 my $guard = $whoislock->guard($ip);
225 232
226 my $c = $iprange->db_cursor; 233 my $c = $iprange->db_cursor;
227 my $v; 234 my $v;
228 235
229 if (!$c->c_get((inet_aton $ip), $v, DB_SET_RANGE)) { 236 if (!$c->c_get((inet_aton $ip), $v, DB_SET_RANGE)) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines