ejabberd 21.07
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 ejabberdctl help
.
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
The 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 ’’;
Change in srg_create
That command API has changed the name
argument to label
, for coherence with the changes in the ejabberd Web Admin page.
Check ejabberdctl help srg_create
or the API page.
Changes in ejabberdctl help
The 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.
Are you curious about what a release is in the Erlang/OTP world? Check Adopting Erlang and Rebar3.
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:
make help
Support to use mix in configure
The 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.
Example usage:
./configure --with-rebar=mix
make rel
_build/prod/rel/ejabberd/bin/ejabberd start_iex
Summary of changes
Compilation
- Add rebar3 3.15.2 binary
- Add support for mix to:
./configure --enable-rebar=mix
- Add
make dev
to build a development release with rebar3 or mix - Improved
make rel
to work with rebar3 and mix - Hex: Add
sql/
andvars.config
to 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
make help
- Fix
extauth.py
failure in test suite with Python 3 (#3612) - Added experimental support for GitHub Codespaces
- Switch test service from TravisCI to GitHub Actions (#3613)
Commands:
- Display extended error message in ejabberdctl (#3584)
- Remove SMP option from ejabberdctl.cfg,
-smp
was 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 uselabel
parameter instead ofname
(#3578)
Modules:
ejabberd_listener
: Newsend_timeout
optionmod_mix
: Improvements to update to 0.14.1 (#3634)mod_muc_room
: Don’t leak owner JIDs (#3615)mod_multicast
: Routing for more MUC packetsmod_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 cachingmod_shared_roster
: Reconfigure cache when options changemod_vcard
: Fix invalid_encoding error when using extended plane characters in vcardmod_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)
SQL:
- 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 tosr_group
tables 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.