prosody: Log error message when failing to open ports

Sun, 31 Jan 2010 16:40:47 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sun, 31 Jan 2010 16:40:47 +0000
changeset 2550
445b1de5652e
parent 2549
55a50e75c0c0
child 2551
5f15f21014c4

prosody: Log error message when failing to open ports

prosody file | annotate | diff | comparison | revisions
--- a/prosody	Sun Jan 31 16:23:38 2010 +0000
+++ b/prosody	Sun Jan 31 16:40:47 2010 +0000
@@ -205,7 +205,7 @@
 				if type(port) ~= "number" then
 					log("error", "Non-numeric "..ports_option..": "..tostring(port));
 				else
-					cl.start(listener, { 
+					local ok, err = cl.start(listener, {
 						ssl = conntype == "ssl" and global_ssl_ctx,
 						port = port,
 						interface = (option and config.get("*", "core", option.."_interface"))
@@ -213,6 +213,24 @@
 							or config.get("*", "core", "interface"),
 						type = conntype
 					});
+					if not ok then
+						local friendly_message = err;
+						if err:match(" in use") then
+							if port == 5222 or port == 5223 or port == 5269 then
+								friendly_message = "check that Prosody or another XMPP server is "
+									.."not already running and using this port";
+							elseif port == 80 or port == 81 then
+								friendly_message = "check that a HTTP server is not already using "
+									.."this port";
+							elseif port == 5280 then
+								friendly_message = "check that Prosody or a BOSH connection manager "
+									.."is not already running";
+							end
+						elseif err:match("permission") then
+							friendly_message = "Prosody does not have sufficient privileges to use this port";
+						end
+						log("error", "Failed to open server port %d, %s", port, friendly_message);
+					end
 				end
 			end
 		end

mercurial