Changeset

1458:fce75b4efda9

prosodyctl: Improve usability with status messages, and waiting up to 5s for the server to start/stop
author Matthew Wild <mwild1@gmail.com>
date Thu, 02 Jul 2009 04:43:08 +0100
parents 1457:4723bd466a54
children 1459:545208bc0e84
files prosodyctl
diffstat 1 files changed, 37 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/prosodyctl	Thu Jul 02 04:11:51 2009 +0100
+++ b/prosodyctl	Thu Jul 02 04:43:08 2009 +0100
@@ -104,6 +104,7 @@
 require "core.modulemanager"
 
 require "util.prosodyctl"
+require "socket"
 -----------------------
 
 function show_message(msg, ...)
@@ -291,7 +292,24 @@
 	end
 	
 	local ok, ret = prosodyctl.start();
-	if ok then return 0; end
+	if ok then
+		local i=1;
+		while true do
+			local ok, running = prosodyctl.isrunning();
+			if ok and running then
+				break;
+			elseif i == 5 then
+				show_message("Still waiting...");
+			elseif i >= 10 then
+				show_message("Prosody is still not running. Please give it some time or check your log files for errors.");
+				return 2;
+			end
+			socket.sleep(0.5);
+			i = i + 1;
+		end
+		show_message("Started");
+		return 0;
+	end
 
 	show_message("Failed to start Prosody");
 	show_message(error_messages[ret])	
@@ -344,7 +362,24 @@
 	end
 	
 	local ok, ret = prosodyctl.stop();
-	if ok then return 0; end
+	if ok then
+		local i=1;
+		while true do
+			local ok, running = prosodyctl.isrunning();
+			if ok and not running then
+				break;
+			elseif i == 5 then
+				show_message("Still waiting...");
+			elseif i >= 10 then
+				show_message("Prosody is still running. Please give it some time or check your log files for errors.");
+				return 2;
+			end
+			socket.sleep(0.5);
+			i = i + 1;
+		end
+		show_message("Stopped");
+		return 0;
+	end
 
 	show_message(error_messages[ret]);
 	return 1;