mod_posix: Truncate the pidfile before writing to ensure that we never overwrite with a PID shorter than the previous, and end with an invalid PID in the file.
--- a/plugins/mod_posix.lua Fri Jul 09 01:09:57 2010 +0100
+++ b/plugins/mod_posix.lua Fri Jul 09 01:16:09 2010 +0100
@@ -95,6 +95,11 @@
pidfile_handle = nil;
prosody.shutdown("Prosody already running");
else
+ pidfile_handle, err = io.open(pidfile, "w+");
+ if not pidfile_handle then
+ module:log("error", "Couldn't write pidfile at %s; %s", pidfile, err);
+ prosody.shutdown("Couldn't write pidfile");
+ end
pidfile_handle:write(tostring(pposix.getpid()));
pidfile_handle:flush();
end