aboutsummaryrefslogtreecommitdiffstats
path: root/prosody
diff options
context:
space:
mode:
authorFlorian Zeitz <florob@babelmonkeys.de>2011-06-15 23:44:18 +0200
committerFlorian Zeitz <florob@babelmonkeys.de>2011-06-15 23:44:18 +0200
commit6d5ef2f7f9dafa7cd299c39a0e9f2873cb6f1289 (patch)
tree168d7a8a71a152a4af33e06ac678b8df2ba6b947 /prosody
parente61a11d634322573b025a64991e7d141c95f1f73 (diff)
downloadprosody-6d5ef2f7f9dafa7cd299c39a0e9f2873cb6f1289.tar.gz
prosody-6d5ef2f7f9dafa7cd299c39a0e9f2873cb6f1289.zip
connlistener, server_select, prosody: Add support for binding to multiple addresses
Diffstat (limited to 'prosody')
-rwxr-xr-xprosody50
1 files changed, 26 insertions, 24 deletions
diff --git a/prosody b/prosody
index 1a58fd33..3f328433 100755
--- a/prosody
+++ b/prosody
@@ -270,7 +270,7 @@ function init_global_state()
if type(port) ~= "number" then
log("error", "Non-numeric "..ports_option..": "..tostring(port));
else
- local ok, err = cl.start(listener, {
+ local ok, errors = cl.start(listener, {
ssl = conntype == "ssl" and global_ssl_ctx,
port = port,
interface = (option and config.get("*", "core", option.."_interface"))
@@ -279,31 +279,33 @@ function init_global_state()
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";
- else
- friendly_message = "this port is in use by another application";
- end
- elseif err:match("permission") then
- friendly_message = "Prosody does not have sufficient privileges to use this port";
- elseif err == "no ssl context" then
- if not config.get("*", "core", "ssl") then
- friendly_message = "there is no 'ssl' config under Host \"*\" which is "
- .."require for legacy SSL ports";
- else
- friendly_message = "initializing SSL support failed, see previous log entries";
+ for addr, err in pairs(errors) do
+ 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";
+ else
+ friendly_message = "this port is in use by another application";
+ end
+ elseif err:match("permission") then
+ friendly_message = "Prosody does not have sufficient privileges to use this port";
+ elseif err == "no ssl context" then
+ if not config.get("*", "core", "ssl") then
+ friendly_message = "there is no 'ssl' config under Host \"*\" which is "
+ .."require for legacy SSL ports";
+ else
+ friendly_message = "initializing SSL support failed, see previous log entries";
+ end
end
+ log("error", "Failed to open server port %d on %s, %s", port, addr, friendly_message);
end
- log("error", "Failed to open server port %d, %s", port, friendly_message);
end
end
end