]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/inline.pm
bugfixen
[ikiwiki.git] / IkiWiki / Plugin / inline.pm
index c6c6c6a1e286bdacb46378d0767f5fa566c4c522..937bd281d270b0b785df482c9cc2430caa358470 100644 (file)
@@ -342,7 +342,18 @@ sub pingurl (@) { #{{{
                return;
        }
 
-       # TODO: daemonize here so slow pings don't slow down wiki updates
+       # daemonize here so slow pings don't slow down wiki updates
+       eval q{use POSIX ’setsid’};
+       chdir '/';
+       open STDIN, '/dev/null';
+       open STDOUT, '>/dev/null';
+       defined(my $pid = fork) or error("Can't fork: $!");
+       return if $pid;
+       setsid() or error("Can't start a new session: $!");
+       open STDERR, '>&STDOUT' or error("Can’t dup stdout: $!");
+
+       # Don't need to keep a lock on the wiki as a daemon.
+       IkiWiki::unlockwiki();
 
        foreach my $page (keys %toping) {
                my $title=pagetitle(basename($page));
@@ -367,6 +378,8 @@ sub pingurl (@) { #{{{
                        }
                }
        }
+
+       exit 0; # daemon done
 } #}}}
 
 1