&uptimeLoop(1);
&randomQuote(2);
&randomFactoid(2);
- &randomFreshmeat(2);
&logLoop(1);
&chanlimitCheck(1);
&netsplitCheck(1); # mandatory
&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
}
}
-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");
}
$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);
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}) {
$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'},
&joinNextChan();
}
+ # debug. needed for testing
+ &TODO("conn->connected = " . scalar($conn->connected()));
+ &TODO("time()-msgtime = " . scalar(time() - $msgtime));
+
if (!$conn->connected or time() - $msgtime > 3600) {
# todo: shouldn't we use cache{connect} somewhere?
if (exists $cache{connect}) {
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;
} );
}
-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");