X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FIRC%2FSchedulers.pl;h=bf254ba6c6d46f85b2d92a68a8678df98bde668b;hb=f7cae48a17d6decd0a9bd997188271daa0a885b1;hp=f0e918cb64f656fe9d104216314e857c8d9e22d3;hpb=f5b6971238746faebb57730bcc946d5a2d1af56d;p=infobot.git diff --git a/src/IRC/Schedulers.pl b/src/IRC/Schedulers.pl index f0e918c..bf254ba 100644 --- a/src/IRC/Schedulers.pl +++ b/src/IRC/Schedulers.pl @@ -60,7 +60,6 @@ sub setupSchedulers { &uptimeLoop(1); &randomQuote(2); &randomFactoid(2); - &randomFreshmeat(2); &logLoop(1); &chanlimitCheck(1); &netsplitCheck(1); # mandatory @@ -75,7 +74,6 @@ sub setupSchedulers { &shmFlush(1); # mandatory &slashdotLoop(2); &plugLoop(2); - &freshmeatLoop(2); &kernelLoop(2); &wingateWriteFile(2); &factoidCheck(2); # takes a couple of seconds on a 486. defer it @@ -178,29 +176,6 @@ sub randomFactoid { } } -sub randomFreshmeat { - my $interval = &getChanConfDefault("randomFreshmeatInterval", 60); - - if (@_) { - &ScheduleThis($interval, "randomFreshmeat"); - return if ($_[0] eq "2"); # defer. - } - - my @chans = &ChanConfList("randomFreshmeat"); - return unless (scalar @chans); - - &Forker("freshmeat", sub { - my $retval = &Freshmeat::randPackage(); - - foreach (@chans) { - next unless (&validChan($_)); - - &status("sending random Freshmeat to $_."); - &say($_, $line); - } - } ); -} - sub logLoop { if (@_) { &ScheduleThis(60, "logLoop"); @@ -305,20 +280,8 @@ sub seenFlushOld { } $sth->finish; } - } elsif ($param{'DBType'} =~ /^dbm/i) { - my $time = time(); - - foreach (keys %seen) { - my $t2 = &sqlSelect("seen", "time", { nick => $_ }) || 0; - my $delta_time = $time - $t2; - next unless ($delta_time > $max_time); - - &DEBUG("seenFlushOld: ".&Time2String($delta_time) ); - delete $seen{$_}; - $delete++; - } } else { - &FIXME("seenFlushOld: for PG/NO-DB."); + &FIXME("seenFlushOld: for bad DBType:" . $param{'DBType'} . "."); } &VERB("SEEN deleted $delete seen entries.",2); @@ -436,7 +399,7 @@ sub chanlimitCheck { } if (defined $limit and scalar keys %{ $channels{$chan}{''} } > $limit) { - &FIXME("LIMIT: set too low!!! FIXME"); + &FIXME("LIMIT: set too low!!!"); ### run NAMES again and flush it. } @@ -454,7 +417,7 @@ sub chanlimitCheck { delete $cache{warn}{chanlimit}{$chan}; if (!defined $limit) { - &status("chanlimit: setting for first time or from netsplit, for $chan"); + &status("chanlimit: $chan: setting for first time or from netsplit."); } if (exists $cache{chanlimitChange}{$chan}) { @@ -588,7 +551,7 @@ sub seenFlush { $stats{'new'} = 0; $stats{'old'} = 0; - if ($param{'DBType'} =~ /^(mysql|pgsql|sqlite|dbm)$/i) { + if ($param{'DBType'} =~ /^(mysql|pgsql|sqlite)$/i) { foreach $nick (keys %seencache) { my $retval = &sqlReplace("seen", { nick => lc $seencache{$nick}{'nick'}, @@ -715,14 +678,14 @@ sub ircCheck { my $iconf = scalar( @x ); my $inow = scalar( keys %channels ); if ($iconf > 2 and $inow * 2 <= $iconf) { - &FIXME("ircCheck: current channels * 2 <= config channels. FIXME."); - &FIXME("ircCheck: iconf = $iconf"); - &FIXME("ircCheck: inow = $inow"); + &FIXME("ircCheck: current channels ($inow) * 2 <= config channels ($iconf)."); # @joinchan = @x; &joinNextChan(); } - if (!$conn->connected or time() - $msgtime > 3600) { + # todo: fix on_disconnect() + + if (time() - $msgtime > 3600) { # todo: shouldn't we use cache{connect} somewhere? if (exists $cache{connect}) { &WARN("ircCheck: no msg for 3600 and disco'd! reconnecting!"); @@ -798,13 +761,18 @@ sub miscCheck { my ($shmid, $size) = ($2,$5); next unless ($shmid != $shm and $size == 2000); my $z = &shmRead($shmid); - if ($z =~ /^(\d+): /) { - my $time = $1; + if ($z =~ /^(\S+):(\d+):(\d+): /) { + my $n = $1; + my $pid = $2; + my $time = $3; next if (time() - $time < 60*60); - + # FIXME remove not-pid shm if parent process dead + next if ($pid == $bot_pid); + # don't touch other bots, if they're running. + next unless ($param{ircNick} =~ /^\Q$n\E$/); } else { -# &DEBUG("shm: $shmid is not ours or old blootbot => ($z)"); -# next; + &DEBUG("shm: $shmid is not ours or old blootbot => ($z)"); + next; } &status("SHM: nuking shmid $shmid"); @@ -938,27 +906,6 @@ sub plugLoop { } ); } -sub freshmeatLoop { - if (@_) { - &ScheduleThis(60, "freshmeatLoop"); - return if ($_[0] eq "2"); - } - - my @chans = &ChanConfList("freshmeatAnnounce"); - return unless (scalar @chans); - - &Forker("freshmeat", sub { - my $data = &Freshmeat::freshmeatAnnounce(); - - foreach (@chans) { - next unless (&::validChan($_)); - - &::status("sending freshmeat update to $_."); - &msg($_, $data); - } - } ); -} - sub kernelLoop { if (@_) { &ScheduleThis(240, "kernelLoop"); @@ -1065,7 +1012,7 @@ sub factoidCheck { my $time = time(); foreach (@list) { - my $age = &getFactInfo($_, "modified_time"); + my $age = &getFactInfo($_, "modified_time"); if (!defined $age or $age !~ /^\d+$/) { if (scalar @list > 50) {