]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Shm.pl
- forgot to set forked{}{PID} in addForked
[infobot.git] / src / Shm.pl
index 3c5034913133dc49d4714b381d9cbb981729e9b2..8d6e5a3882564f546d96305ae0dd80e2bc9827a9 100644 (file)
@@ -117,12 +117,20 @@ sub addForked {
        $count++;
     }
 
-    if (exists $forked{$name}) {
+    if (exists $forked{$name} and !scalar keys %{ $forked{$name} }) {
+       &WARN("addF: forked{$name} exists but is empty; deleting.");
+       undef $forked{$name};
+    }
+
+    if (exists $forked{$name} and scalar keys %{ $forked{$name} }) {
        my $time        = $forked{$name}{Time};
        my $continue    = 0;
 
-       if (-d "/proc/$forked{$name}{PID}") {
+       &DEBUG("PID => $forked{$name}{PID}");
+
+       if ( -d "/proc/$forked{$name}{PID}") {
            &status("fork: still running; good. BAIL OUT.");
+           return 0;
        } else {
            &WARN("Found dead fork; removing and resetting.");
            $continue = 1;
@@ -139,6 +147,7 @@ sub addForked {
     }
 
     $forked{$name}{Time}       = time();
+    $forked{$name}{PID}                = $$;
     $forkedtime                        = time();
     $count{'Fork'}++;
     return 1;