aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2014-08-28 12:05:18 +0100
committerMatthew Wild <mwild1@gmail.com>2014-08-28 12:05:18 +0100
commit580f0a2a97b67c80dcb77d386bf469912c5ddfcb (patch)
treef9b41c73e3cda1b1f3ffe63a3921967eea4a20d6
parentaf8588572ea3aef8d7c799315adaaf7c7bb64c4f (diff)
parente5cad1e21d8d45fb12dc0f3d53767c7fb875c96c (diff)
downloadprosody-580f0a2a97b67c80dcb77d386bf469912c5ddfcb.tar.gz
prosody-580f0a2a97b67c80dcb77d386bf469912c5ddfcb.zip
Merge 0.10->trunk
-rw-r--r--core/modulemanager.lua2
-rw-r--r--net/http/server.lua2
-rw-r--r--plugins/mod_c2s.lua2
-rw-r--r--plugins/mod_compression.lua6
-rw-r--r--plugins/mod_posix.lua2
-rw-r--r--plugins/mod_s2s/mod_s2s.lua5
-rwxr-xr-xprosodyctl1
-rw-r--r--util/filters.lua2
-rw-r--r--util/prosodyctl.lua32
-rw-r--r--util/xmppstream.lua4
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
diff --git a/prosodyctl b/prosodyctl
index 1060a7c9..910b96bf 100755
--- a/prosodyctl
+++ b/prosodyctl
@@ -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