ejabberd v22.05 Release Notes

  • Core

    • C2S: Don't expect that socket will be available in c2s_terminated hook
    • Event handling process hook tracing
    • Guard against erlang:system_info(logical_processors) not always returning a number
    • domain_balancing: Allow for specifying type only, without specifying component_number


    • โž• Add TLS certificate authentication for MQTT connections
    • ๐Ÿ›  Fix login when generating client id, keep connection record (#3593)
    • ๐Ÿ›  Pass property name as expected in mqtt_codec (fixes login using MQTT 5)
    • ๐Ÿ‘Œ Support MQTT subscriptions spread over the cluster (#3750)


    • Attach meta field with real jid to mucsub subscription events
    • ๐Ÿ– Handle user removal
    • Stop empty MUC rooms 30 seconds after creation
    • default_room_options: Update options configurable
    • subscribe_room_many_max_users: New option in mod_muc_admin


    • ๐Ÿ‘Œ Improved options to support @HOST@ and auto values
    • ๐Ÿ”ง Set auth and register options based on ejabberd configuration
    • conversejs_options: New option
    • conversejs_resources: New option


    • mod_pubsub: Allow for limiting item_expire value
    • mod_pubsub: Unsubscribe JID on whitelist removal
    • node_pep: Add config-node and multi-items features (#3714)


    • ๐Ÿ‘Œ Improve compatibility with various db engine versions
    • ๐Ÿ”€ Sync old-to-new schema script with reality (#3790)
    • โœ… Slight improvement in MSSQL testing support, but not yet complete

    Other Modules

    • auth_jwt: Checking if an user is active in SM for a JWT authenticated user (#3795)
    • mod_configure: Implement Get List of Registered/Online Users from XEP-0133
    • mod_host_meta: New module to serve host-meta files, see XEP-0156
    • mod_mam: Store all mucsub notifications not only message notifications
    • mod_ping: Delete ping timer if resource is gone after the ping has been sent
    • mod_ping: Don't send ping if resource is gone
    • mod_push: Fix notifications for pending sessions (XEP-0198)
    • mod_push: Keep push session ID on session resume
    • mod_shared_roster: Adjust special group cache size
    • mod_shared_roster: Normalize JID on unset_presence (#3752)
    • mod_stun_disco: Fix parsing of IPv6 listeners


    • ๐Ÿ‘ autoconf: Supported from 2.59 to the new 2.71
    • โšก๏ธ fast_tls: Update to 1.1.14 to support OpenSSL 3
    • โšก๏ธ jiffy: Update to 1.1.1 to support Erlang/OTP 25.0-rc1
    • โšก๏ธ luerl: Update to 1.0.0, now available in hex.pm
    • lager: This dependency is used only when Erlang is older than 22
    • โšก๏ธ rebar2: Updated binary to work from Erlang/OTP 22 to 25
    • โšก๏ธ rebar3: Updated binary to work from Erlang/OTP 22 to 25
    • โšก๏ธ make update: Fix when used with rebar 3.18


    • ๐Ÿš€ mix release: Copy include/ files for ejabberd, deps and otp, in mix.exs
    • ๐Ÿš€ rebar3 release: Fix ERTS path in ejabberdctl
    • ๐Ÿ”ง configure.ac: Set default ejabberd version number when not using git
    • ๐Ÿšš mix.exs: Move some dependencies as optional
    • ๐Ÿš€ mix.exs: No need to use Distillery, Elixir has built-in support for OTP releases (#3788)
    • ๐Ÿง tools/make-binaries: New script for building Linux binaries
    • ๐Ÿ— tools/make-installers: New script for building command line installers


    • ๐Ÿ†• New make relive similar to ejabberdctl live without installing
    • โš  ejabberdctl: Fix some warnings detected by ShellCheck
    • ejabberdctl: Mention in the help: etop, ping and started/stopped
    • ๐Ÿ”Š make rel: Switch to paths: conf/, database/, logs/
    • mix.exs: Add -boot and -boot_var in ejabberdctl instead of adding vm.args
    • โš  tools/captcha.sh: Fix some warnings detected by ShellCheck


    • Accept more types of ejabberdctl commands arguments as JSON-encoded
    • delete_old_mam_messages_batch: New command with rate limit
    • delete_old_messages_batch: New command with rate limit
    • get_room_occupants_number: Don't request the whole MUC room state (#3684, #1964)
    • ๐Ÿ‘ get_vcard: Add support for MUC room vCard
    • oauth_revoke_token: Add support to work with all backends
    • room_unused_*: Optimize commands in SQL by reusing created_at
    • rooms_unused_...: Let get_all_rooms handle global argument (#3726)
    • stop|restart: Terminate ejabberd_sm before everything else to ensure sessions closing (#3641)
    • subscribe_room_many: New command

    ๐ŸŒ Translations

    • โšก๏ธ Updated Catalan
    • โšก๏ธ Updated French
    • โšก๏ธ Updated German
    • โšก๏ธ Updated Portuguese
    • โšก๏ธ Updated Portuguese (Brazil)
    • โšก๏ธ Updated Spanish


    • ๐Ÿ”Š CI: Publish CT logs and Cover on failure to an external GH Pages repo
    • โœ… CI: Test shell scripts using ShellCheck (#3738)
    • ๐Ÿ— Container: New workflow to build and publish containers
    • ๐Ÿš€ Installers: Add job to create draft release
    • ๐Ÿ— Installers: New workflow to build binary packages
    • โœ… Runtime: New workflow to test compilation, rel, starting and ejabberdctl