plugins/mod_posix.lua

changeset 3341
a8a3e662fea7
parent 3340
0769cc5f34b6
child 3471
482275e38224
--- a/plugins/mod_posix.lua	Fri Jul 09 01:16:09 2010 +0100
+++ b/plugins/mod_posix.lua	Fri Jul 09 01:23:54 2010 +0100
@@ -95,13 +95,17 @@
 				pidfile_handle = nil;
 				prosody.shutdown("Prosody already running");
 			else
+				pidfile_handle:close();
 				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");
+				else
+					if lfs.lock(pidfile_handle, "w") then
+						pidfile_handle:write(tostring(pposix.getpid()));
+						pidfile_handle:flush();
+					end
 				end
-				pidfile_handle:write(tostring(pposix.getpid()));
-				pidfile_handle:flush();
 			end
 		end
 	end

mercurial