Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package prosody for openSUSE:Factory checked 
in at 2021-05-15 01:23:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/prosody (Old)
 and      /work/SRC/openSUSE:Factory/.prosody.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "prosody"

Sat May 15 01:23:48 2021 rev:23 rq:893045 version:0.11.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/prosody/prosody.changes  2021-02-16 
22:51:05.610713667 +0100
+++ /work/SRC/openSUSE:Factory/.prosody.new.2988/prosody.changes        
2021-05-15 01:23:55.343080910 +0200
@@ -1,0 +2,37 @@
+Thu May 13 18:16:14 UTC 2021 - Carsten Ziepke <[email protected]>
+
+- Update to 0.11.9:
+  Security: 
+  * mod_limits, prosody.cfg.lua: Enable rate limits by default
+  * certmanager: Disable renegotiation by default
+  * mod_proxy65: Restrict access to local c2s connections by default
+  * util.startup: Set more aggressive defaults for GC
+  * mod_c2s, mod_s2s, mod_component, mod_bosh, mod_websockets: Set default 
stanza size limits
+  * mod_authinternal{plain,hashed}: Use constant-time string comparison for 
secrets
+  * mod_dialback: Remove dialback-without-dialback feature
+  * mod_dialback: Use constant-time comparison with hmac
+  Minor changes
+  * util.hashes: Add constant-time string comparison (binding to CRYPTO_memcmp)
+  * mod_c2s: Don???t throw errors in async code when connections are gone
+  * mod_c2s: Fix traceback in session close when conn is nil
+  * core.certmanager: Improve detection of LuaSec/OpenSSL capabilities
+  * mod_saslauth: Use a defined SASL error
+  * MUC: Add support for advertising muc#roomconfig_allowinvites in room 
disco#info
+  * mod_saslauth: Don???t throw errors in async code when connections are gone
+  * mod_pep: Advertise base pubsub feature (fixes #1632: mod_pep missing 
pubsub feature in disco)
+  * prosodyctl check config: Add ???gc??? to list of global options
+  * prosodyctl about: Report libexpat version if known
+  * util.xmppstream: Add API to dynamically configure the stanza size limit 
for a stream
+  * util.set: Add is_set() to test if an object is a set
+  * mod_http: Skip IP resolution in non-proxied case
+  * mod_c2s: Log about missing conn on async state changes
+  * util.xmppstream: Reduce internal default xmppstream limit to 1MB
+- Relevant: https://prosody.im/security/advisory_20210512
+  * boo#1186027: Prosody XMPP server advisory 2021-05-12
+  * CVE-2021-32919
+  * CVE-2021-32917
+  * CVE-2021-32917
+  * CVE-2021-32920
+  * CVE-2021-32918
+
+-------------------------------------------------------------------

Old:
----
  prosody-0.11.8.tar.gz
  prosody-0.11.8.tar.gz.asc

New:
----
  prosody-0.11.9.tar.gz
  prosody-0.11.9.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ prosody.spec ++++++
--- /var/tmp/diff_new_pack.7ED0vW/_old  2021-05-15 01:23:55.859079097 +0200
+++ /var/tmp/diff_new_pack.7ED0vW/_new  2021-05-15 01:23:55.863079082 +0200
@@ -18,7 +18,7 @@
 
 %define _piddir /run
 Name:           prosody
-Version:        0.11.8
+Version:        0.11.9
 Release:        0
 Summary:        Communications server for Jabber/XMPP
 License:        MIT

++++++ prosody-0.11.8.tar.gz -> prosody-0.11.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/.hg_archival.txt 
new/prosody-0.11.9/.hg_archival.txt
--- old/prosody-0.11.8/.hg_archival.txt 2021-02-15 16:29:13.000000000 +0100
+++ new/prosody-0.11.9/.hg_archival.txt 2021-05-12 17:22:02.000000000 +0200
@@ -1,4 +1,4 @@
 repo: 3e3171b59028ee70122cfec6ecf98f518f946b59
-node: 774811e2c6abfc5a1b1dd60007cf564bb7c1f969
+node: d0e9ffccdef934af554ea2d4a5beb9a52e9e951d
 branch: 0.11
-tag: 0.11.8
+tag: 0.11.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/core/certmanager.lua 
new/prosody-0.11.9/core/certmanager.lua
--- old/prosody-0.11.8/core/certmanager.lua     2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/core/certmanager.lua     2021-05-12 17:22:02.000000000 
+0200
@@ -36,9 +36,13 @@
 local resolve_path = require"util.paths".resolve_relative_path;
 local config_path = prosody.paths.config or ".";
 
+local function test_option(option)
+       return not not 
ssl_newcontext({mode="server",protocol="sslv23",options={ option }});
+end
+
 local luasec_major, luasec_minor = ssl._VERSION:match("^(%d+)%.(%d+)");
 local luasec_version = tonumber(luasec_major) * 100 + tonumber(luasec_minor);
-local luasec_has = softreq"ssl.config" or {
+local luasec_has = ssl.config or softreq"ssl.config" or {
        algorithms = {
                ec = luasec_version >= 5;
        };
@@ -46,11 +50,12 @@
                curves_list = luasec_version >= 7;
        };
        options = {
-               cipher_server_preference = luasec_version >= 2;
-               no_ticket = luasec_version >= 4;
-               no_compression = luasec_version >= 5;
-               single_dh_use = luasec_version >= 2;
-               single_ecdh_use = luasec_version >= 2;
+               cipher_server_preference = 
test_option("cipher_server_preference");
+               no_ticket = test_option("no_ticket");
+               no_compression = test_option("no_compression");
+               single_dh_use = test_option("single_dh_use");
+               single_ecdh_use = test_option("single_ecdh_use");
+               no_renegotiation = test_option("no_renegotiation");
        };
 };
 
@@ -115,6 +120,7 @@
                no_compression = luasec_has.options.no_compression and 
configmanager.get("*", "ssl_compression") ~= true;
                single_dh_use = luasec_has.options.single_dh_use;
                single_ecdh_use = luasec_has.options.single_ecdh_use;
+               no_renegotiation = luasec_has.options.no_renegotiation;
        };
        verifyext = { "lsec_continue", "lsec_ignore_purpose" };
        curve = luasec_has.algorithms.ec and not 
luasec_has.capabilities.curves_list and "secp384r1";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_auth_internal_hashed.lua 
new/prosody-0.11.9/plugins/mod_auth_internal_hashed.lua
--- old/prosody-0.11.8/plugins/mod_auth_internal_hashed.lua     2021-02-15 
16:29:13.000000000 +0100
+++ new/prosody-0.11.9/plugins/mod_auth_internal_hashed.lua     2021-05-12 
17:22:02.000000000 +0200
@@ -16,6 +16,7 @@
 local hex = require"util.hex";
 local to_hex, from_hex = hex.to, hex.from;
 local saslprep = require "util.encodings".stringprep.saslprep;
+local secure_equals = require "util.hashes".equals;
 
 local log = module._log;
 local host = module.host;
@@ -39,7 +40,7 @@
        end
 
        if credentials.password ~= nil and string.len(credentials.password) ~= 
0 then
-               if saslprep(credentials.password) ~= password then
+               if not secure_equals(saslprep(credentials.password), password) 
then
                        return nil, "Auth failed. Provided password is 
incorrect.";
                end
 
@@ -59,7 +60,7 @@
        local stored_key_hex = to_hex(stored_key);
        local server_key_hex = to_hex(server_key);
 
-       if valid and stored_key_hex == credentials.stored_key and 
server_key_hex == credentials.server_key then
+       if valid and secure_equals(stored_key_hex, credentials.stored_key) and 
secure_equals(server_key_hex, credentials.server_key) then
                return true;
        else
                return nil, "Auth failed. Invalid username, password, or 
password hash information.";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_auth_internal_plain.lua 
new/prosody-0.11.9/plugins/mod_auth_internal_plain.lua
--- old/prosody-0.11.8/plugins/mod_auth_internal_plain.lua      2021-02-15 
16:29:13.000000000 +0100
+++ new/prosody-0.11.9/plugins/mod_auth_internal_plain.lua      2021-05-12 
17:22:02.000000000 +0200
@@ -9,6 +9,7 @@
 local usermanager = require "core.usermanager";
 local new_sasl = require "util.sasl".new;
 local saslprep = require "util.encodings".stringprep.saslprep;
+local secure_equals = require "util.hashes".equals;
 
 local log = module._log;
 local host = module.host;
@@ -26,7 +27,7 @@
                return nil, "Password fails SASLprep.";
        end
 
-       if password == saslprep(credentials.password) then
+       if secure_equals(password, saslprep(credentials.password)) then
                return true;
        else
                return nil, "Auth failed. Invalid username or password.";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_bosh.lua 
new/prosody-0.11.9/plugins/mod_bosh.lua
--- old/prosody-0.11.8/plugins/mod_bosh.lua     2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_bosh.lua     2021-05-12 17:22:02.000000000 
+0200
@@ -45,6 +45,7 @@
 
 local consider_bosh_secure = module:get_option_boolean("consider_bosh_secure");
 local cross_domain = module:get_option("cross_domain_bosh", false);
+local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 
1024*256);
 
 if cross_domain == true then cross_domain = "*"; end
 if type(cross_domain) == "table" then cross_domain = 
table.concat(cross_domain, ", "); end
@@ -115,7 +116,7 @@
        local body = request.body;
 
        local context = { request = request, response = response, notopen = 
true };
-       local stream = new_xmpp_stream(context, stream_callbacks);
+       local stream = new_xmpp_stream(context, stream_callbacks, 
stanza_size_limit);
        response.context = context;
 
        local headers = response.headers;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_c2s.lua 
new/prosody-0.11.9/plugins/mod_c2s.lua
--- old/prosody-0.11.8/plugins/mod_c2s.lua      2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_c2s.lua      2021-05-12 17:22:02.000000000 
+0200
@@ -26,7 +26,7 @@
 local c2s_timeout = module:get_option_number("c2s_timeout", 300);
 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5);
 local opt_keepalives = module:get_option_boolean("c2s_tcp_keepalives", 
module:get_option_boolean("tcp_keepalives", true));
-local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit"); 
-- TODO come up with a sensible default (util.xmppstream defaults to 10M)
+local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 
1024*256);
 
 local measure_connections = module:measure("connections", "amount");
 local measure_ipv6 = module:measure("ipv6", "amount");
@@ -190,12 +190,12 @@
                                if not session.destroyed then
                                        session.log("warn", "Failed to receive 
a stream close response, closing connection anyway...");
                                        sm_destroy_session(session, 
reason_text);
-                                       conn:close();
+                                       if conn then conn:close(); end
                                end
                        end);
                else
                        sm_destroy_session(session, reason_text);
-                       conn:close();
+                       if conn then conn:close(); end
                end
        else
                local reason_text = (reason and (reason.name or reason.text or 
reason.condition)) or reason;
@@ -226,11 +226,19 @@
 end, 200);
 
 function runner_callbacks:ready()
-       self.data.conn:resume();
+       if self.data.conn then
+               self.data.conn:resume();
+       else
+               (self.data.log or log)("debug", "Session has no connection to 
resume");
+       end
 end
 
 function runner_callbacks:waiting()
-       self.data.conn:pause();
+       if self.data.conn then
+               self.data.conn:pause();
+       else
+               (self.data.log or log)("debug", "Session has no connection to 
pause while waiting");
+       end
 end
 
 function runner_callbacks:error(err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_component.lua 
new/prosody-0.11.9/plugins/mod_component.lua
--- old/prosody-0.11.8/plugins/mod_component.lua        2021-02-15 
16:29:13.000000000 +0100
+++ new/prosody-0.11.9/plugins/mod_component.lua        2021-05-12 
17:22:02.000000000 +0200
@@ -27,6 +27,7 @@
 local log = module._log;
 
 local opt_keepalives = module:get_option_boolean("component_tcp_keepalives", 
module:get_option_boolean("tcp_keepalives", true));
+local stanza_size_limit = 
module:get_option_number("component_stanza_size_limit", 
module:get_option_number("s2s_stanza_size_limit", 1024*512));
 
 local sessions = module:shared("sessions");
 
@@ -297,7 +298,7 @@
 
        session.log("info", "Incoming Jabber component connection");
 
-       local stream = new_xmpp_stream(session, stream_callbacks);
+       local stream = new_xmpp_stream(session, stream_callbacks, 
stanza_size_limit);
        session.stream = stream;
 
        session.notopen = true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_dialback.lua 
new/prosody-0.11.9/plugins/mod_dialback.lua
--- old/prosody-0.11.8/plugins/mod_dialback.lua 2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_dialback.lua 2021-05-12 17:22:02.000000000 
+0200
@@ -13,6 +13,7 @@
 local st = require "util.stanza";
 local sha256_hash = require "util.hashes".sha256;
 local sha256_hmac = require "util.hashes".hmac_sha256;
+local secure_equals = require "util.hashes".equals;
 local nameprep = require "util.encodings".stringprep.nameprep;
 local uuid_gen = require"util.uuid".generate;
 
@@ -21,20 +22,6 @@
 local dialback_requests = setmetatable({}, { __mode = 'v' });
 
 local dialback_secret = 
sha256_hash(module:get_option_string("dialback_secret", uuid_gen()), true);
-local dwd = module:get_option_boolean("dialback_without_dialback", false);
-
---- Helper to check that a session peer's certificate is valid
-function check_cert_status(session)
-       local host = session.direction == "outgoing" and session.to_host or 
session.from_host
-       local conn = session.conn:socket()
-       local cert
-       if conn.getpeercertificate then
-               cert = conn:getpeercertificate()
-       end
-
-       return module:fire_event("s2s-check-certificate", { host = host, 
session = session, cert = cert });
-end
-
 
 function module.save()
        return { dialback_secret = dialback_secret };
@@ -56,7 +43,7 @@
 end
 
 function verify_dialback(id, to, from, key)
-       return key == generate_dialback(id, to, from);
+       return secure_equals(key, generate_dialback(id, to, from));
 end
 
 module:hook("stanza/jabber:server:dialback:verify", function(event)
@@ -104,15 +91,6 @@
                        origin:close("improper-addressing");
                end
 
-               if dwd and origin.secure then
-                       if check_cert_status(origin, from) == false then
-                               return
-                       elseif origin.cert_chain_status == "valid" and 
origin.cert_identity_status == "valid" then
-                               origin.sends2s(st.stanza("db:result", { to = 
from, from = to, id = attr.id, type = "valid" }));
-                               module:fire_event("s2s-authenticated", { 
session = origin, host = from });
-                               return true;
-                       end
-               end
 
                origin.hosts[from] = { dialback_key = stanza[1] };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_http.lua 
new/prosody-0.11.9/plugins/mod_http.lua
--- old/prosody-0.11.8/plugins/mod_http.lua     2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_http.lua     2021-05-12 17:22:02.000000000 
+0200
@@ -161,7 +161,7 @@
 local function get_ip_from_request(request)
        local ip = request.conn:ip();
        local forwarded_for = request.headers.x_forwarded_for;
-       if forwarded_for then
+       if forwarded_for and trusted_proxies[ip] then
                forwarded_for = forwarded_for..", "..ip;
                for forwarded_ip in forwarded_for:gmatch("[^%s,]+") do
                        if not trusted_proxies[forwarded_ip] then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_limits.lua 
new/prosody-0.11.9/plugins/mod_limits.lua
--- old/prosody-0.11.8/plugins/mod_limits.lua   2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_limits.lua   2021-05-12 17:22:02.000000000 
+0200
@@ -31,7 +31,7 @@
                burst = burst:match("^(%d+) ?s$");
        end
        local n_burst = tonumber(burst);
-       if not n_burst then
+       if burst and not n_burst then
                module:log("error", "Unable to parse burst for %s: %q, using 
default burst interval (%ds)", sess_type, tostring(burst), default_burst);
        end
        return n_burst or default_burst;
@@ -39,7 +39,16 @@
 
 -- Process config option into limits table:
 -- limits = { c2s = { bytes_per_second = X, burst_seconds = Y } }
-local limits = {};
+local limits = {
+       c2s = {
+               bytes_per_second = 10 * 1024;
+               burst_seconds = 2;
+       };
+       s2sin = {
+               bytes_per_second = 30 * 1024;
+               burst_seconds = 2;
+       };
+};
 
 for sess_type, sess_limits in pairs(limits_cfg) do
        limits[sess_type] = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_proxy65.lua 
new/prosody-0.11.9/plugins/mod_proxy65.lua
--- old/prosody-0.11.8/plugins/mod_proxy65.lua  2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_proxy65.lua  2021-05-12 17:22:02.000000000 
+0200
@@ -94,6 +94,7 @@
 
        local proxy_address = module:get_option_string("proxy65_address", host);
        local proxy_acl = module:get_option_array("proxy65_acl");
+       local proxy_open_access = 
module:get_option_boolean("proxy65_open_access", false);
 
        -- COMPAT w/pre-0.9 where proxy65_port was specified in the components 
section of the config
        local legacy_config = module:get_option_number("proxy65_port");
@@ -110,13 +111,20 @@
 
                -- check ACL
                -- using 'while' instead of 'if' so we can break out of it
-               while proxy_acl and #proxy_acl > 0 do --luacheck: ignore 512
+               local allow;
+               if proxy_acl and #proxy_acl > 0 then
                        local jid = stanza.attr.from;
-                       local allow;
                        for _, acl in ipairs(proxy_acl) do
-                               if jid_compare(jid, acl) then allow = true; 
break; end
+                               if jid_compare(jid, acl) then
+                                       allow = true;
+                                       break;
+                               end
                        end
-                       if allow then break; end
+               elseif proxy_open_access or origin.type == "c2s" then
+                       allow = true;
+               end
+
+               if not allow then
                        module:log("warn", "Denying use of proxy for %s", 
tostring(stanza.attr.from));
                        origin.send(st.error_reply(stanza, "auth", 
"forbidden"));
                        return true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_s2s/mod_s2s.lua 
new/prosody-0.11.9/plugins/mod_s2s/mod_s2s.lua
--- old/prosody-0.11.8/plugins/mod_s2s/mod_s2s.lua      2021-02-15 
16:29:13.000000000 +0100
+++ new/prosody-0.11.9/plugins/mod_s2s/mod_s2s.lua      2021-05-12 
17:22:02.000000000 +0200
@@ -37,7 +37,7 @@
 local secure_domains, insecure_domains =
        module:get_option_set("s2s_secure_domains", {})._items, 
module:get_option_set("s2s_insecure_domains", {})._items;
 local require_encryption = module:get_option_boolean("s2s_require_encryption", 
false);
-local stanza_size_limit = module:get_option_number("s2s_stanza_size_limit"); 
-- TODO come up with a sensible default (util.xmppstream defaults to 10M)
+local stanza_size_limit = module:get_option_number("s2s_stanza_size_limit", 
1024*512);
 
 local measure_connections = module:measure("connections", "amount");
 local measure_ipv6 = module:measure("ipv6", "amount");
@@ -276,7 +276,7 @@
 end
 
 --- Helper to check that a session peer's certificate is valid
-function check_cert_status(session)
+local function check_cert_status(session)
        local host = session.direction == "outgoing" and session.to_host or 
session.from_host
        local conn = session.conn:socket()
        local cert
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_saslauth.lua 
new/prosody-0.11.9/plugins/mod_saslauth.lua
--- old/prosody-0.11.8/plugins/mod_saslauth.lua 2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/plugins/mod_saslauth.lua 2021-05-12 17:22:02.000000000 
+0200
@@ -44,6 +44,9 @@
 end
 
 local function handle_status(session, status, ret, err_msg)
+       if not session.sasl_handler then
+               return "failure", "temporary-auth-failure", "Connection gone";
+       end
        if status == "failure" then
                module:fire_event("authentication-failure", { session = 
session, condition = ret, text = err_msg });
                session.sasl_handler = session.sasl_handler:clean_clone();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/mod_websocket.lua 
new/prosody-0.11.9/plugins/mod_websocket.lua
--- old/prosody-0.11.8/plugins/mod_websocket.lua        2021-02-15 
16:29:13.000000000 +0100
+++ new/prosody-0.11.9/plugins/mod_websocket.lua        2021-05-12 
17:22:02.000000000 +0200
@@ -28,7 +28,7 @@
 
 local t_concat = table.concat;
 
-local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 10 
* 1024 * 1024);
+local stanza_size_limit = module:get_option_number("c2s_stanza_size_limit", 
1024 * 256);
 local frame_buffer_limit = 
module:get_option_number("websocket_frame_buffer_limit", 2 * stanza_size_limit);
 local frame_fragment_limit = 
module:get_option_number("websocket_frame_fragment_limit", 8);
 local stream_close_timeout = module:get_option_number("c2s_close_timeout", 5);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/plugins/muc/members_only.lib.lua 
new/prosody-0.11.9/plugins/muc/members_only.lib.lua
--- old/prosody-0.11.8/plugins/muc/members_only.lib.lua 2021-02-15 
16:29:13.000000000 +0100
+++ new/prosody-0.11.9/plugins/muc/members_only.lib.lua 2021-05-12 
17:22:02.000000000 +0200
@@ -61,12 +61,20 @@
 end
 
 module:hook("muc-disco#info", function(event)
-       event.reply:tag("feature", {var = get_members_only(event.room) and 
"muc_membersonly" or "muc_open"}):up();
+       local members_only_room = not not get_members_only(event.room);
+       local members_can_invite = not not get_allow_member_invites(event.room);
+       event.reply:tag("feature", {var = members_only_room and 
"muc_membersonly" or "muc_open"}):up();
        table.insert(event.form, {
                name = 
"{http://prosody.im/protocol/muc}roomconfig_allowmemberinvites";;
                label = "Allow members to invite new members";
                type = "boolean";
-               value = not not get_allow_member_invites(event.room);
+               value = members_can_invite;
+       });
+       table.insert(event.form, {
+               name = "muc#roomconfig_allowinvites";
+               label = "Allow users to invite other users";
+               type = "boolean";
+               value = not members_only_room or members_can_invite;
        });
 end);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/prosody.cfg.lua.dist 
new/prosody-0.11.9/prosody.cfg.lua.dist
--- old/prosody-0.11.8/prosody.cfg.lua.dist     2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/prosody.cfg.lua.dist     2021-05-12 17:22:02.000000000 
+0200
@@ -51,6 +51,7 @@
                "blocklist"; -- Allow users to block communications with other 
users
                "vcard4"; -- User profiles (stored in PEP)
                "vcard_legacy"; -- Conversion between legacy vCard and PEP 
Avatar, vcard
+               "limits"; -- Enable bandwidth limiting for XMPP connections
 
        -- Nice to have
                "version"; -- Replies to server version requests
@@ -71,7 +72,6 @@
                --"http_files"; -- Serve static files from a directory over HTTP
 
        -- Other specific functionality
-               --"limits"; -- Enable bandwidth limiting for XMPP connections
                --"groups"; -- Shared roster support
                --"server_contact_info"; -- Publish contact information for 
this service
                --"announce"; -- Send announcement to all online users
@@ -121,6 +121,17 @@
 
 --s2s_secure_domains = { "jabber.org" }
 
+-- Enable rate limits for incoming client and server connections
+
+limits = {
+  c2s = {
+    rate = "10kb/s";
+  };
+  s2sin = {
+    rate = "30kb/s";
+  };
+}
+
 -- Select the authentication backend to use. The 'internal' providers
 -- use Prosody's configured data storage to store the authentication data.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/prosody.release 
new/prosody-0.11.9/prosody.release
--- old/prosody-0.11.8/prosody.release  2021-02-15 18:23:35.000000000 +0100
+++ new/prosody-0.11.9/prosody.release  2021-05-12 18:52:16.000000000 +0200
@@ -1 +1 @@
-0.11.8
+0.11.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/prosodyctl 
new/prosody-0.11.9/prosodyctl
--- old/prosody-0.11.8/prosodyctl       2021-02-15 16:29:13.000000000 +0100
+++ new/prosody-0.11.9/prosodyctl       2021-05-12 17:22:02.000000000 +0200
@@ -413,7 +413,8 @@
        print("");
        print("# Lua module versions");
        local module_versions, longest_name = {}, 8;
-       local luaevent =dependencies.softreq"luaevent";
+       local luaevent = dependencies.softreq"luaevent";
+       local lxp = dependencies.softreq"lxp";
        dependencies.softreq"ssl";
        dependencies.softreq"DBI";
        for name, module in pairs(package.loaded) do
@@ -428,6 +429,9 @@
        if luaevent then
                module_versions["libevent"] = luaevent.core.libevent_version();
        end
+       if lxp then
+               module_versions["libexpat"] = lxp._EXPAT_VERSION;
+       end
        local sorted_keys = array.collect(keys(module_versions)):sort();
        for _, name in ipairs(sorted_keys) do
                print(name..":"..string.rep(" ", longest_name-#name), 
module_versions[name]);
@@ -837,7 +841,7 @@
                local known_global_options = set.new({
                        "pidfile", "log", "plugin_paths", "prosody_user", 
"prosody_group", "daemonize",
                        "umask", "prosodyctl_timeout", "use_ipv6", 
"use_libevent", "network_settings",
-                       "network_backend", "http_default_host",
+                       "network_backend", "http_default_host", "gc",
                        "statistics_interval", "statistics", 
"statistics_config",
                });
                local config = configmanager.getconfig();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/util/set.lua 
new/prosody-0.11.9/util/set.lua
--- old/prosody-0.11.8/util/set.lua     2021-02-15 16:29:13.000000000 +0100
+++ new/prosody-0.11.9/util/set.lua     2021-05-12 17:22:02.000000000 +0200
@@ -6,8 +6,8 @@
 -- COPYING file in the source package for more information.
 --
 
-local ipairs, pairs, setmetatable, next, tostring =
-      ipairs, pairs, setmetatable, next, tostring;
+local ipairs, pairs, getmetatable, setmetatable, next, tostring =
+      ipairs, pairs, getmetatable, setmetatable, next, tostring;
 local t_concat = table.concat;
 
 local _ENV = nil;
@@ -31,6 +31,11 @@
        return a;
 end
 
+local function is_set(o)
+       local mt = getmetatable(o);
+       return mt == set_mt;
+end
+
 local function new(list)
        local items = setmetatable({}, items_mt);
        local set = { _items = items };
@@ -171,6 +176,7 @@
 
 return {
        new = new;
+       is_set = is_set;
        union = union;
        difference = difference;
        intersection = intersection;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/util/startup.lua 
new/prosody-0.11.9/util/startup.lua
--- old/prosody-0.11.8/util/startup.lua 2021-02-15 16:29:13.000000000 +0100
+++ new/prosody-0.11.9/util/startup.lua 2021-05-12 17:22:02.000000000 +0200
@@ -12,7 +12,13 @@
 
 local original_logging_config;
 
-local default_gc_params = { mode = "incremental", threshold = 105, speed = 250 
};
+local default_gc_params = {
+       mode = "incremental";
+       -- Incremental mode defaults
+       threshold = 105, speed = 500;
+       -- Generational mode defaults
+       minor_threshold = 20, major_threshold = 50;
+};
 
 local short_params = { D = "daemonize", F = "no-daemonize" };
 local value_params = { config = true };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/util/xmppstream.lua 
new/prosody-0.11.9/util/xmppstream.lua
--- old/prosody-0.11.8/util/xmppstream.lua      2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/util/xmppstream.lua      2021-05-12 17:22:02.000000000 
+0200
@@ -22,7 +22,7 @@
 local lxp_supports_xmldecl = pcall(lxp.new, { XmlDecl = false });
 local lxp_supports_bytecount = not not lxp.new({}).getcurrentbytecount;
 
-local default_stanza_size_limit = 1024*1024*10; -- 10MB
+local default_stanza_size_limit = 1024*1024*1; -- 1MB
 
 local _ENV = nil;
 -- luacheck: std none
@@ -188,6 +188,9 @@
                                stanza = t_remove(stack);
                        end
                else
+                       if lxp_supports_bytecount then
+                               cb_handleprogress(stanza_size);
+                       end
                        if cb_streamclosed then
                                cb_streamclosed(session);
                        end
@@ -290,6 +293,9 @@
                        return ok, err;
                end,
                set_session = meta.set_session;
+               set_stanza_size_limit = function (_, new_stanza_size_limit)
+                       stanza_size_limit = new_stanza_size_limit;
+               end;
        };
 end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/prosody-0.11.8/util-src/hashes.c 
new/prosody-0.11.9/util-src/hashes.c
--- old/prosody-0.11.8/util-src/hashes.c        2021-02-15 16:29:13.000000000 
+0100
+++ new/prosody-0.11.9/util-src/hashes.c        2021-05-12 17:22:02.000000000 
+0200
@@ -23,6 +23,7 @@
 
 #include "lua.h"
 #include "lauxlib.h"
+#include <openssl/crypto.h>
 #include <openssl/sha.h>
 #include <openssl/md5.h>
 #include <openssl/hmac.h>
@@ -189,6 +190,18 @@
        return 1;
 }
 
+static int Lhash_equals(lua_State *L) {
+       size_t len1, len2;
+       const char *s1 = luaL_checklstring(L, 1, &len1);
+       const char *s2 = luaL_checklstring(L, 2, &len2);
+       if(len1 == len2) {
+               lua_pushboolean(L, CRYPTO_memcmp(s1, s2, len1) == 0);
+       } else {
+               lua_pushboolean(L, 0);
+       }
+       return 1;
+}
+
 static const luaL_Reg Reg[] = {
        { "sha1",               Lsha1           },
        { "sha224",             Lsha224         },
@@ -201,6 +214,7 @@
        { "hmac_sha512",        Lhmac_sha512    },
        { "hmac_md5",           Lhmac_md5       },
        { "scram_Hi_sha1",      LscramHi        },
+       { "equals",             Lhash_equals    },
        { NULL,                 NULL            }
 };
 

Reply via email to