diff options
author | Matthew Wild <mwild1@gmail.com> | 2014-08-28 12:05:18 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2014-08-28 12:05:18 +0100 |
commit | 580f0a2a97b67c80dcb77d386bf469912c5ddfcb (patch) | |
tree | f9b41c73e3cda1b1f3ffe63a3921967eea4a20d6 | |
parent | af8588572ea3aef8d7c799315adaaf7c7bb64c4f (diff) | |
parent | e5cad1e21d8d45fb12dc0f3d53767c7fb875c96c (diff) | |
download | prosody-580f0a2a97b67c80dcb77d386bf469912c5ddfcb.tar.gz prosody-580f0a2a97b67c80dcb77d386bf469912c5ddfcb.zip |
Merge 0.10->trunk
-rw-r--r-- | core/modulemanager.lua | 2 | ||||
-rw-r--r-- | net/http/server.lua | 2 | ||||
-rw-r--r-- | plugins/mod_c2s.lua | 2 | ||||
-rw-r--r-- | plugins/mod_compression.lua | 6 | ||||
-rw-r--r-- | plugins/mod_posix.lua | 2 | ||||
-rw-r--r-- | plugins/mod_s2s/mod_s2s.lua | 5 | ||||
-rwxr-xr-x | prosodyctl | 1 | ||||
-rw-r--r-- | util/filters.lua | 2 | ||||
-rw-r--r-- | util/prosodyctl.lua | 32 | ||||
-rw-r--r-- | util/xmppstream.lua | 4 |
10 files changed, 37 insertions, 21 deletions
diff --git a/core/modulemanager.lua b/core/modulemanager.lua index b5674ece..db4c6bd0 100644 --- a/core/modulemanager.lua +++ b/core/modulemanager.lua @@ -123,7 +123,7 @@ local function do_load_module(host, module_name, state) end if modulemap[host][module_name] then - log("warn", "%s is already loaded for %s, so not loading again", module_name, host); + log("debug", "%s is already loaded for %s, so not loading again", module_name, host); return nil, "module-already-loaded"; elseif modulemap["*"][module_name] then local mod = modulemap["*"][module_name]; diff --git a/net/http/server.lua b/net/http/server.lua index 510b77fb..09f8d2a4 100644 --- a/net/http/server.lua +++ b/net/http/server.lua @@ -98,7 +98,7 @@ function listener.onconnect(conn) local pending = {}; local waiting = false; local function process_next() - if waiting then log("debug", "can't process_next, waiting"); return; end + if waiting then return; end -- log("debug", "can't process_next, waiting"); waiting = true; while sessions[conn] and #pending > 0 do local request = t_remove(pending); diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua index f0cdd7fb..bb3858c0 100644 --- a/plugins/mod_c2s.lua +++ b/plugins/mod_c2s.lua @@ -91,7 +91,7 @@ end function stream_callbacks.error(session, error, data) if error == "no-stream" then - session.log("debug", "Invalid opening stream header"); + session.log("debug", "Invalid opening stream header (%s)", (data:gsub("^([^\1]+)\1", "{%1}"))); session:close("invalid-namespace"); elseif error == "parse-error" then (session.log or log)("debug", "Client XML parse error: %s", tostring(data)); diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index 969172fd..da55e5bb 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -147,6 +147,12 @@ module:hook("stanza/http://jabber.org/protocol/compress:compressed", function(ev end end); +module:hook("stanza/http://jabber.org/protocol/compress:failure", function(event) + local err = event.stanza:get_child(); + (event.origin.log or module._log)("warn", "Compression setup failed (%s)", err and err.name or "unknown reason"); + return true; +end); + module:hook("stanza/http://jabber.org/protocol/compress:compress", function(event) local session, stanza = event.origin, event.stanza; diff --git a/plugins/mod_posix.lua b/plugins/mod_posix.lua index 89d6d2b6..c9b9f3aa 100644 --- a/plugins/mod_posix.lua +++ b/plugins/mod_posix.lua @@ -80,7 +80,7 @@ local function write_pidfile() if pidfile_handle then remove_pidfile(); end - pidfile = module:get_option("pidfile"); + pidfile = module:get_option_string("pidfile"); if pidfile then local err; local mode = stat(pidfile) and "r+" or "w+"; diff --git a/plugins/mod_s2s/mod_s2s.lua b/plugins/mod_s2s/mod_s2s.lua index f177bf82..8614b857 100644 --- a/plugins/mod_s2s/mod_s2s.lua +++ b/plugins/mod_s2s/mod_s2s.lua @@ -347,7 +347,9 @@ function stream_callbacks.streamopened(session, attr) log("debug", "Sending stream features: %s", tostring(features)); send(features); end + session.notopen = nil; elseif session.direction == "outgoing" then + session.notopen = nil; -- If we are just using the connection for verifying dialback keys, we won't try and auth it if not attr.id then error("stream response did not give us a streamid!!!"); end session.streamid = attr.id; @@ -381,7 +383,6 @@ function stream_callbacks.streamopened(session, attr) end end end - session.notopen = nil; end function stream_callbacks.streamclosed(session) @@ -391,6 +392,7 @@ end function stream_callbacks.error(session, error, data) if error == "no-stream" then + session.log("debug", "Invalid opening stream header (%s)", (data:gsub("^([^\1]+)\1", "{%1}"))); session:close("invalid-namespace"); elseif error == "parse-error" then session.log("debug", "Server-to-server XML parse error: %s", tostring(error)); @@ -501,6 +503,7 @@ local function initialize_session(session) function session.reset_stream() session.notopen = true; + session.streamid = nil; session.stream:reset(); end @@ -220,6 +220,7 @@ local error_messages = setmetatable({ ["no-such-host"] = "The given hostname does not exist in the config"; ["unable-to-save-data"] = "Unable to store, perhaps you don't have permission?"; ["no-pidfile"] = "There is no 'pidfile' option in the configuration file, see http://prosody.im/doc/prosodyctl#pidfile for help"; + ["invalid-pidfile"] = "The 'pidfile' option in the configuration file is not a string, see http://prosody.im/doc/prosodyctl#pidfile for help"; ["no-posix"] = "The mod_posix module is not enabled in the Prosody config file, see http://prosody.im/doc/prosodyctl for more info"; ["no-such-method"] = "This module has no commands"; ["not-running"] = "Prosody is not running"; diff --git a/util/filters.lua b/util/filters.lua index c2bdca07..427dcb7c 100644 --- a/util/filters.lua +++ b/util/filters.lua @@ -45,6 +45,8 @@ function add_filter(session, type, callback, priority) if not filter_list then filter_list = {}; session.filters[type] = filter_list; + elseif filter_list[callback] then + return; -- Filter already added end priority = priority or 0; diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua index d59c163c..cc48d590 100644 --- a/util/prosodyctl.lua +++ b/util/prosodyctl.lua @@ -1,7 +1,7 @@ -- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain --- +-- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- @@ -146,7 +146,7 @@ function adduser(params) if not(provider) or provider.name == "null" then usermanager.initialize_host(host); end - + local ok, errmsg = usermanager.create_user(user, password, host); if not ok then return false, errmsg; @@ -162,7 +162,7 @@ function user_exists(params) if not(provider) or provider.name == "null" then usermanager.initialize_host(host); end - + return usermanager.user_exists(user, host); end @@ -170,7 +170,7 @@ function passwd(params) if not _M.user_exists(params) then return false, "no-such-user"; end - + return _M.adduser(params); end @@ -179,7 +179,7 @@ function deluser(params) return false, "no-such-user"; end local user, host = nodeprep(params.user), nameprep(params.host); - + return usermanager.delete_user(user, host); end @@ -189,29 +189,33 @@ function getpid() return false, "no-pidfile"; end + if type(pidfile) ~= "string" then + return false, "invalid-pidfile"; + end + local modules_enabled = set.new(config.get("*", "modules_disabled")); if prosody.platform ~= "posix" or modules_enabled:contains("posix") then return false, "no-posix"; end - + local file, err = io.open(pidfile, "r+"); if not file then return false, "pidfile-read-failed", err; end - + local locked, err = lfs.lock(file, "w"); if locked then file:close(); return false, "pidfile-not-locked"; end - + local pid = tonumber(file:read("*a")); file:close(); - + if not pid then return false, "invalid-pid"; end - + return true, pid; end @@ -252,10 +256,10 @@ function stop() if not ret then return false, "not-running"; end - + local ok, pid = _M.getpid() if not ok then return false, pid; end - + signal.kill(pid, signal.SIGTERM); return true; end @@ -268,10 +272,10 @@ function reload() if not ret then return false, "not-running"; end - + local ok, pid = _M.getpid() if not ok then return false, pid; end - + signal.kill(pid, signal.SIGHUP); return true; end diff --git a/util/xmppstream.lua b/util/xmppstream.lua index 6982aae3..dede0da9 100644 --- a/util/xmppstream.lua +++ b/util/xmppstream.lua @@ -109,7 +109,7 @@ function new_sax_handlers(session, stream_callbacks, cb_handleprogress) end else -- Garbage before stream? - cb_error(session, "no-stream"); + cb_error(session, "no-stream", tagname); end return; end @@ -249,7 +249,7 @@ function new(session, stream_callbacks, stanza_size_limit) ["xml:lang"] = "en", xmlns = stream_callbacks.default_ns, version = session.version and (session.version > 0 and "1.0" or nil), - id = session.streamid or "", + id = session.streamid, from = from or session.host, to = to, }; if session.stream_attrs then |