# none
# return:
# none
-sub watchdog {
+BEGIN {
+ # last time the watchdog was called
+ # initialize to now()
+ my $watchdog_last_call = time();
- foreach my $session (keys(%main::sessions)) {
- if (defined(read_session_activity($session))) {
- if (read_session_activity($session) < (time() - 180) and read_session_activity($session) < (time() - 240)) {
- print_msg("Session $session timed out", INFO);
- # FIXME: what to do?
- # automatic reconnects should be done by a plugin
- } else {
- my $irc = $main::sessions{$session}{'session'};
-
- # validate nickname
- my $logged_in = $irc->logged_in();
- my $nick_name = $irc->nick_name();
- if ($logged_in and $main::sessions{$session}{'past_motd'} == 1) {
- if ($nick_name ne $main::sessions{$session}{'nickname'}) {
- if ($main::sessions{$session}{'last_nick_change_attempt'} < (time() - 35)) {
- # the bot is not using the desired nickname, try changing this
- print_msg("nickname is: $nick_name, desired nickname is: " . $main::sessions{$session}{'nickname'} . ", issuing nick change", INFO);
- $irc->yield( nick => $main::sessions{$session}{'nickname'} );
- $main::sessions{$session}{'last_nick_change_attempt'} = time();
+ sub watchdog {
+
+ if ((time() - $watchdog_last_call) < 5) {
+ # repeated call
+ return;
+ }
+ $watchdog_last_call = time();
+
+ foreach my $session (keys(%main::sessions)) {
+ if (defined(read_session_activity($session))) {
+ if (read_session_activity($session) < (time() - 180) and read_session_activity($session) < (time() - 240)) {
+ print_msg("Session $session timed out", INFO);
+ # automatic reconnects should be done by a plugin
+ } else {
+ my $irc = $main::sessions{$session}{'session'};
+
+ # validate nickname
+ my $logged_in = $irc->logged_in();
+ my $nick_name = $irc->nick_name();
+ if ($logged_in and $main::sessions{$session}{'past_motd'} == 1) {
+ if ($nick_name ne $main::sessions{$session}{'nickname'}) {
+ if ($main::sessions{$session}{'last_nick_change_attempt'} < (time() - 35)) {
+ # the bot is not using the desired nickname, try changing this
+ print_msg("nickname is: $nick_name, desired nickname is: " . $main::sessions{$session}{'nickname'} . ", issuing nick change", INFO);
+ $irc->yield( nick => $main::sessions{$session}{'nickname'} );
+ $main::sessions{$session}{'last_nick_change_attempt'} = time();
+ }
}
}
}
}
}
- }
+ }
}