From f65fa0ad680fb38b560ae0a459ce6b043f9631ac Mon Sep 17 00:00:00 2001
From: joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Date: Sat, 2 Dec 2006 00:12:26 +0000
Subject: [PATCH] * Fix daemonisation code to only do daemon setup things after
 forking the   child process.

---
 IkiWiki/Plugin/inline.pm | 10 +++++-----
 IkiWiki/UserInfo.pm      |  6 +++---
 debian/changelog         |  7 +++++++
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
index f90d87ae2..8c00ca5f5 100644
--- a/IkiWiki/Plugin/inline.pm
+++ b/IkiWiki/Plugin/inline.pm
@@ -336,7 +336,7 @@ sub genfeed ($$$$@) { #{{{
 } #}}}
 
 sub pingurl (@) { #{{{
-	return unless $config{pingurl} && %toping;
+	return unless @{$config{pingurl}} && %toping;
 
 	eval q{require RPC::XML::Client};
 	if ($@) {
@@ -345,13 +345,13 @@ sub pingurl (@) { #{{{
 	}
 
 	# 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;
+	chdir '/';
+	eval q{use POSIX ’setsid’};
 	setsid() or error("Can't start a new session: $!");
+	open STDIN, '/dev/null';
+	open STDOUT, '>/dev/null';
 	open STDERR, '>&STDOUT' or error("Can’t dup stdout: $!");
 
 	# Don't need to keep a lock on the wiki as a daemon.
diff --git a/IkiWiki/UserInfo.pm b/IkiWiki/UserInfo.pm
index fd823c963..5c9d7dce6 100644
--- a/IkiWiki/UserInfo.pm
+++ b/IkiWiki/UserInfo.pm
@@ -141,13 +141,13 @@ sub send_commit_mails ($$$@) { #{{{
 		);
 
 		# Daemonize, in case the mail sending takes a while.
+		defined(my $pid = fork) or error("Can't fork: $!");
+		return if $pid;
+		setsid() or error("Can't start a new session: $!");
 		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: $!");
 
 		unlockwiki(); # don't need to keep a lock on the wiki
diff --git a/debian/changelog b/debian/changelog
index bde526b2a..0bae7aae9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+ikiwiki (1.34.3) UNRELEASED; urgency=low
+
+  * Fix daemonisation code to only do daemon setup things after forking the
+    child process.
+
+ -- Joey Hess <joeyh@debian.org>  Fri,  1 Dec 2006 19:11:32 -0500
+
 ikiwiki (1.34.2) unstable; urgency=low
 
   * Allow /etc/ikiwiki/wikilist to list just the names of users, if so then
-- 
2.39.5