]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Shm.pl
- use &hasParam() instead of IsChanConf for more commands
[infobot.git] / src / Shm.pl
index 6811ff458e26a91a8ef491eb258aaf1819e8385d..4d34170a391dd31bb35cef504990a7bb7e8b780e 100644 (file)
@@ -126,10 +126,15 @@ sub addForked {
        my $time        = $forked{$name}{Time};
        my $continue    = 0;
 
-       &DEBUG("PID => $forked{$name}{PID}");
+       $continue++ if ($forked{$name}{PID} == $$);
 
-       if (-d "/proc/$forked{$name}{PID}") {
+       if ($continue) {
+           &WARN("hrm.. fork pid == mypid == $$; how did this happen?");
+
+       } elsif ( -d "/proc/$forked{$name}{PID}") {
            &status("fork: still running; good. BAIL OUT.");
+           return 0;
+
        } else {
            &WARN("Found dead fork; removing and resetting.");
            $continue = 1;
@@ -137,8 +142,10 @@ sub addForked {
 
        if ($continue) {
            # NOTHING.
+
        } elsif (time() - $time > 900) {        # stale fork > 15m.
            &status("forked: forked{$name} presumably exited without notifying us.");
+
        } else {                                # fresh fork.
            &msg($who, "$name is already running ". &Time2String(time() - $time));
            return 0;
@@ -146,6 +153,7 @@ sub addForked {
     }
 
     $forked{$name}{Time}       = time();
+    $forked{$name}{PID}                = $$;
     $forkedtime                        = time();
     $count{'Fork'}++;
     return 1;