This new ejabberd 21.07 release includes many improvements and bugfixes in more than 130 commits.
When upgrading from previous versions, please notice: there is a suggested change in all SQL databases schemas, another suggested change specific for MySQL, an API change in
srg_create, and major changes in
Support for rebar3 has improved to allow building an OTP release. And support for Elixir has improved to use
mix for compilation and build releases. So, you may want to use
--with-rebar=rebar3 | mix and benefit from those tools features over rebar. Nevertheless, rebar is still used by default, and its support will be maintained for a long time as it’s used by several automatic build processes.
A more detailed explanation of those topics:
Add missing indexes to SQL
sr_group table in SQL databases got a new index.
If you store Shared Roster Groups in a SQL database, you can create the index corresponding to your database type, check the example SQL queries in the commit.
MySQL Backend Patch for scram-sha512
The MySQL database schema has improved to support scram-sha512 (#3582)
If you have a MySQL database, you can update your schema with:
ALTER TABLE users MODIFY serverkey varchar(128) NOT NULL DEFAULT ’’; ALTER TABLE users MODIFY salt varchar(128) NOT NULL DEFAULT ’’;
That command API has changed the
name argument to
label, for coherence with the changes in the ejabberd Web Admin page.
ejabberdctl help srg_create or the API page.
help command has changed its usage and results.
If you use that command in some automatic script, please check
ejabberdctl help and adapt your scripts accordingly.
Build a release using rebar3 and mix
It is now possible to build a release when using rebar, rebar3 and mix. Until now this was only supported when using rebar. In this sense, a recent rebar3 binary is included with ejabberd now.
For example usage, check the Production Release documentation section.
Build a development release
Now it is possible to build a development release when using rebar3 or mix. It allows running ejabberd in the local machine for development, manual testing… without installing in the system.
For example usage, check the Development Release documentation section.
By the way, Makefile has so many targets that now there’s a summary of them:
Support to use mix in
configure script supports rebar, rebar3 and Elixir‘s mix. Until now only rebar and rebar3 were supported.
If you want to compile ejabberd using mix, in theory any recent Elixir version is supported. But
make rel requires Elixir 1.10.3 or higher.
./configure --with-rebar=mix make rel _build/prod/rel/ejabberd/bin/ejabberd start_iex
Summary of changes
- Add rebar3 3.15.2 binary
- Add support for mix to:
make devto build a development release with rebar3 or mix
make relto work with rebar3 and mix
- Hex: Add
vars.configto Hex package files (#3251)
- Hex: Update mix applications list to fix error
p1_utils is listed as both...
- There are so many targets in Makefile… add
extauth.pyfailure in test suite with Python 3 (#3612)
- Added experimental support for GitHub Codespaces
- Switch test service from TravisCI to GitHub Actions (#3613)
- Display extended error message in ejabberdctl (#3584)
- Remove SMP option from ejabberdctl.cfg,
-smpwas removed in OTP 21 (#3560)
create_room: After creating room, store in DB if it’s persistent (#3632)
help: Major changes in its usage and output (#3569)
srg_create: Update to use
labelparameter instead of
mod_mix: Improvements to update to 0.14.1 (#3634)
mod_muc_room: Don’t leak owner JIDs (#3615)
mod_multicast: Routing for more MUC packets
mod_multicast: Correctly strip only other bcc addresses (#3639)
mod_mqtt: Allow shared roster group placeholder in mqtt topic (#3566)
mod_pubsub: Several fixes when using PubSub with RSM (#3618)(#3621)
mod_push: Handle MUC/Sub events correctly (#3565)
mod_shared_roster: Delete cache after performing change to be sure that in cache will be up to date data (#3578)
mod_shared_roster: Improve database and caching
mod_shared_roster: Reconfigure cache when options change
mod_vcard: Fix invalid_encoding error when using extended plane characters in vcard
mod_vcard: Update econf:vcard() to generate correct vcard_temp record
- Translations: Major improvements in the Indonesian and Portuguese translations
- WebAdmin: New simple pages to view mnesia tables information and content
- WebSocket: Fix typos (#3622)
- MySQL Backend Patch for scram-sha512 (#3582)
- SQLite: When exporting for SQLite, use its specific escape options (#2576)
- SQLite: Minor fixes for new_sql_schema support (#3303)
mod_privacy: Cast as boolean when exporting privacy_list_data to PostgreSQL (#1773)
mod_mqtt: Add mqtt_pub table definition for MSSQL (#3097)
mod_shared_roster: Add missing indexes to
sr_grouptables in all SQL databases
ejabberd 21.07 download & feedback
As usual, the release is tagged in the Git source code repository on Github.
The source package and binary installers are available at ejabberd XMPP & MQTT server download page.
If you suspect that you’ve found a bug, please search or fill a bug report on Github.