Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package prosody for openSUSE:Factory checked in at 2026-01-26 11:07:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/prosody (Old) and /work/SRC/openSUSE:Factory/.prosody.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "prosody" Mon Jan 26 11:07:03 2026 rev:42 rq:1329148 version:13.0.4 Changes: -------- --- /work/SRC/openSUSE:Factory/prosody/prosody.changes 2026-01-23 17:34:54.518508111 +0100 +++ /work/SRC/openSUSE:Factory/.prosody.new.1928/prosody.changes 2026-01-26 11:07:46.911678115 +0100 @@ -1,0 +2,22 @@ +Mon Jan 26 08:03:17 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 13.0.4: + Fixes and improvements: + * mod_s2s: Fix traceback when outgoing s2s queue is full + * util.uuid: Fix padding of group 2 of UUIDv7 to use zeroes + Minor changes: + * core.modulemanager: Fix shell commands on components + * mod_s2s: Explicitly prevent sending recursive error replies when queue is full + * modulemanager: Allow component modules to specify additional inherited modules + * prosodyctl check features: Use modulemanager to calculate modules that will actually be loaded + * prosodyctl check features: change recommendation from mod_muc_mam to mod_mam + * prosodyctl check config: Fix traceback when zero modules are enabled + * mod_pubsub: Fail early if loaded outside of a component to prevent misconfiguration + * doap: Add XEP-0486 + * mod_pubsub/commands: Fix listing item numbers along with item names + * mod_account_activity: Handle authentication provider returning no user info + * mod_mam: Automatically load mod_muc_mam if loaded on a MUC component + * mod_muc: Inherit mod_mam if globally loaded + * See https://blog.prosody.im/prosody-13.0.4-released/ + +------------------------------------------------------------------- Old: ---- prosody-13.0.3.tar.gz prosody-13.0.3.tar.gz.asc New: ---- prosody-13.0.4.tar.gz prosody-13.0.4.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ prosody.spec ++++++ --- /var/tmp/diff_new_pack.KcZph7/_old 2026-01-26 11:07:47.511703156 +0100 +++ /var/tmp/diff_new_pack.KcZph7/_new 2026-01-26 11:07:47.515703323 +0100 @@ -18,7 +18,7 @@ %define _piddir /run Name: prosody -Version: 13.0.3 +Version: 13.0.4 Release: 0 Summary: Communications server for Jabber/XMPP License: MIT ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.KcZph7/_old 2026-01-26 11:07:47.559705160 +0100 +++ /var/tmp/diff_new_pack.KcZph7/_new 2026-01-26 11:07:47.563705327 +0100 @@ -1,6 +1,6 @@ -mtime: 1769175718 -commit: 3d59fd6654890f517cb585f698a258954ef17c3adfa33955795e239a9a162709 +mtime: 1769414704 +commit: 9741ec35815466abc8116fb6d203afaac2fd9eac0c3ce5ed499d01316f43a07e url: https://src.opensuse.org/lua/prosody.git -revision: 3d59fd6654890f517cb585f698a258954ef17c3adfa33955795e239a9a162709 +revision: 9741ec35815466abc8116fb6d203afaac2fd9eac0c3ce5ed499d01316f43a07e projectscmsync: https://src.opensuse.org/lua/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-01-26 09:05:31.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ prosody-13.0.3.tar.gz -> prosody-13.0.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/.hg_archival.txt new/prosody-13.0.4/.hg_archival.txt --- old/prosody-13.0.3/.hg_archival.txt 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/.hg_archival.txt 2026-01-22 11:23:29.134479384 +0100 @@ -1,4 +1,4 @@ repo: 3e3171b59028ee70122cfec6ecf98f518f946b59 -node: f65302ea37b071c3c4bf5fa31f3e4ffd4b4922d1 +node: f463e101fbd9eec8a547ac2aaf299b650694dbfa branch: 13.0 -tag: 13.0.3 +tag: 13.0.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/core/modulemanager.lua new/prosody-13.0.4/core/modulemanager.lua --- old/prosody-13.0.3/core/modulemanager.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/core/modulemanager.lua 2026-01-22 11:23:29.134479384 +0100 @@ -37,7 +37,7 @@ "s2s", "s2s_auth_certs", }; -local component_inheritable_modules = { +local default_component_inheritable_modules = { "tls", "saslauth", "dialback", @@ -46,6 +46,7 @@ "s2s_bidi", "smacks", "server_contact_info", + "admin_shell", }; -- We need this to let modules access the real global namespace @@ -128,7 +129,17 @@ local global_modules = set.new(autoload_modules) + set.new(global_modules_enabled) - set.new(global_modules_disabled); if component then - global_modules = set.intersection(set.new(component_inheritable_modules), global_modules); + local component_inheritable_modules = set.new(default_component_inheritable_modules); + local ok, _, metadata = loader:load_resource(component); + if ok then + local extra_inheritable_modules = metadata.inherit_modules; + if extra_inheritable_modules then + for inherit_module in extra_inheritable_modules:gmatch("[^, ]+") do + component_inheritable_modules:add(inherit_module); + end + end + end + global_modules = set.intersection(component_inheritable_modules, global_modules); end local modules = (global_modules + set.new(host_modules_enabled)) - set.new(host_modules_disabled); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/doc/doap.xml new/prosody-13.0.4/doc/doap.xml --- old/prosody-13.0.3/doc/doap.xml 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/doc/doap.xml 2026-01-22 11:23:29.134479384 +0100 @@ -913,5 +913,12 @@ <xmpp:since>13.0.0</xmpp:since> </xmpp:SupportedXep> </implements> + <implements> + <xmpp:SupportedXep> + <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0486.html"/> + <xmpp:version>0.1.0</xmpp:version> + <xmpp:since>13.0.0</xmpp:since> + </xmpp:SupportedXep> + </implements> </Project> </rdf:RDF> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/plugins/mod_account_activity.lua new/prosody-13.0.4/plugins/mod_account_activity.lua --- old/prosody-13.0.3/plugins/mod_account_activity.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/plugins/mod_account_activity.lua 2026-01-22 11:23:29.134479384 +0100 @@ -69,11 +69,16 @@ for username in um.users(host) do local last_active = store:get_key(username, "timestamp"); if not last_active then - local created_at = um.get_account_info(username, host).created; - if created_at and (now - created_at) > duration_sec then - self.session.print(username, ""); - n_inactive = n_inactive + 1; - elseif not created_at then + local user_info = um.get_account_info(username, host); + local created_at; + if user_info then + created_at = user_info.created; + if created_at and (now - created_at) > duration_sec then + self.session.print(username, ""); + n_inactive = n_inactive + 1; + end + end + if not created_at then n_unknown = n_unknown + 1; end elseif (now - last_active) > duration_sec then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/plugins/mod_mam/mod_mam.lua new/prosody-13.0.4/plugins/mod_mam/mod_mam.lua --- old/prosody-13.0.3/plugins/mod_mam/mod_mam.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/plugins/mod_mam/mod_mam.lua 2026-01-22 11:23:29.134479384 +0100 @@ -9,6 +9,11 @@ -- XEP-0313: Message Archive Management for Prosody -- +if module:get_host_type() == "component" and module:get_option_string("component_module") == "muc" then + module:depends("muc_mam"); + return; +end + local xmlns_mam = "urn:xmpp:mam:2"; local xmlns_mam_ext = "urn:xmpp:mam:2#extended"; local xmlns_delay = "urn:xmpp:delay"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/plugins/mod_pubsub/commands.lib.lua new/prosody-13.0.4/plugins/mod_pubsub/commands.lib.lua --- old/prosody-13.0.3/plugins/mod_pubsub/commands.lib.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/plugins/mod_pubsub/commands.lib.lua 2026-01-22 11:23:29.134479384 +0100 @@ -44,7 +44,7 @@ local items = select(2, assert(service:get_items(node_name, true))); local count = 0; - for item_name in pairs(items) do + for _, item_name in ipairs(items) do count = count + 1; self.session.print(item_name); end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/plugins/mod_pubsub/mod_pubsub.lua new/prosody-13.0.4/plugins/mod_pubsub/mod_pubsub.lua --- old/prosody-13.0.3/plugins/mod_pubsub/mod_pubsub.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/plugins/mod_pubsub/mod_pubsub.lua 2026-01-22 11:23:29.134479384 +0100 @@ -1,3 +1,7 @@ +if module:get_host_type() ~= "component" then + error("Pubsub should be loaded as a component, please see https://prosody.im/doc/modules/mod_pubsub", 0); +end + local pubsub = require "prosody.util.pubsub"; local st = require "prosody.util.stanza"; local jid_bare = require "prosody.util.jid".bare; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/plugins/mod_s2s.lua new/prosody-13.0.4/plugins/mod_s2s.lua --- old/prosody-13.0.3/plugins/mod_s2s.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/plugins/mod_s2s.lua 2026-01-22 11:23:29.134479384 +0100 @@ -201,6 +201,7 @@ end if not host.sendq:push(st.clone(stanza)) then host.log("warn", "stanza [%s] not queued ", stanza.name); + if not event.origin or stanza.attr.type == "error" or stanza.attr.type == "result" then return false; end event.origin.send(st.error_reply(stanza, "wait", "resource-constraint", "Outgoing stanza queue full")); return true; end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/plugins/muc/mod_muc.lua new/prosody-13.0.4/plugins/muc/mod_muc.lua --- old/prosody-13.0.3/plugins/muc/mod_muc.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/plugins/muc/mod_muc.lua 2026-01-22 11:23:29.134479384 +0100 @@ -5,6 +5,7 @@ -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- +--% inherit_modules: mam -- Exposed functions: -- @@ -18,6 +19,7 @@ -- live_rooms() -> room -- shutdown_component() + if module:get_host_type() ~= "component" then error("MUC should be loaded as a component, please see https://prosody.im/doc/components", 0); end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/prosody.release new/prosody-13.0.4/prosody.release --- old/prosody-13.0.3/prosody.release 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/prosody.release 2026-01-22 11:23:29.134479384 +0100 @@ -1 +1 @@ -13.0.3 +13.0.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/util/prosodyctl/check.lua new/prosody-13.0.4/util/prosodyctl/check.lua --- old/prosody-13.0.3/util/prosodyctl/check.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/util/prosodyctl/check.lua 2026-01-22 11:23:29.134479384 +0100 @@ -475,7 +475,6 @@ "websocket_get_response_text", }); local config = configmanager.getconfig(); - local global = api("*"); -- Check that we have any global options (caused by putting a host at the top) if it.count(it.filter("log", pairs(config["*"]))) == 0 then ok = false; @@ -538,9 +537,8 @@ end do -- Check for modules enabled both normally and as components - local modules = global:get_option_set("modules_enabled"); - for host, options in enabled_hosts() do - local component_module = options.component_module; + for host in enabled_hosts() do + local modules, component_module = modulemanager.get_modules_for_host(host); if component_module and modules:contains(component_module) then print((" mod_%s is enabled both in modules_enabled and as Component %q %q"):format(component_module, host, component_module)); print(" This means the service is enabled on all VirtualHosts as well as the Component."); @@ -1555,7 +1553,7 @@ }; local recommended_component_modules = { - muc = { "muc_mam" }; + muc = { "mam" }; }; local function print_feature_status(feature, host) @@ -1690,7 +1688,7 @@ for _, component_module in ipairs({ suggested, alternate, ... }) do found = host_components[component_module][1]; if found then - local enabled_component_modules = api(found):get_option_inherited_set("modules_enabled"); + local enabled_component_modules = modulemanager.get_modules_for_host(found); local recommended_mods = recommended_component_modules[component_module]; if recommended_mods then local missing_mods = {}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.3/util/uuid.lua new/prosody-13.0.4/util/uuid.lua --- old/prosody-13.0.3/util/uuid.lua 2026-01-05 13:34:45.144840830 +0100 +++ new/prosody-13.0.4/util/uuid.lua 2026-01-22 11:23:29.134479384 +0100 @@ -32,7 +32,7 @@ local unix_ts_ms = m_floor(time.now()*1000); local unix_ts_ms_a = m_floor(unix_ts_ms / 0x10000); local unix_ts_ms_b = unix_ts_ms % 0x10000; - return ("%08x-%4x-7%3s-%1s%3s-%12s"):format(unix_ts_ms_a, unix_ts_ms_b, get_nibbles(3), get_twobits(), get_nibbles(3), get_nibbles(12)); + return ("%08x-%04x-7%3s-%1s%3s-%12s"):format(unix_ts_ms_a, unix_ts_ms_b, get_nibbles(3), get_twobits(), get_nibbles(3), get_nibbles(12)); end return {
