The new ejabberd 21.04 release includes many bugfixes and a few improvements. This release includes minor improvements to fully support Erlang/OTP 24 and Rebar3. At the same time, it maintains support back to the old Erlang/OTP 19.3 and Rebar2.
There are no configuration, hooks or API changes that require attention when upgrading. Nonetheless, there’s a new API command (
get_user_subscriptions), a new configure option (
--enable-lua), and an improvement in the MySQL database definition.
MySQL database definition improvement
We updated the database definition to fix the “specified key was too long” warnings. By default, the new character set and collation (
utf8mb4_unicode_ci) will only be used with newly created databases. The existing installations don’t need to convert anything.
However, if you feel like it, after you upgrade to ejabberd 21.04, you can apply the following SQL command to convert your existing MySQL database character set to the latest definition:
alter table push_session convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table mqtt_pub convert to character set utf8mb4 collate utf8mb4_unicode_ci;
As you may have noticed, the last binary installer for Windows is from a year ago. Since then, the recommended method to install ejabberd on Windows is using the ejabberd Docker image, and we’ve just published two tutorials on how to do it:
- How to install ejabberd on Windows 10 using Docker Desktop
- How to install ejabberd on Windows 7 (or 8) using Docker Toolbox
ejabberd 21.04 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.
A detailed list of changes
add_rosteritem/...: Add argument guards to roster commands
get_user_subscriptions: New command for MUC/Sub
remove_mam_for_user_with_peer: Fix when removing room archive
send_message: Fix bug introduced in ejabberd 21.01
set_vcard: Return modules errors
Build and setup
- Allow ejabberd to be compatible as a dependency for an Erlang project using rebar3
- CAPTCHA: New question/answer-based CAPTCHA script
--enable-lua: new configure option for luerl instead of –enable-tools
- Remove support for HiPE, it was experimental and Erlang/OTP 24 removes it
sql_queryrecord to handle the Erlang/OTP 24 compiler reports
- Updated dependencies to fix Dialyzer warnings
- CAPTCHA: Update
FORM_TYPEfrom captcha to register
- LDAP: fix eldap certificate verification
- MySQL: Fix for “specified key was too long”
- Translations: updated the Esperanto, Greek, and Japanese translations
- Websocket: Fix PONG responses
mod_block_strangers: If stanza is type error, allow it passing
mod_caps: Don’t request roster when not needed
mod_caps: Skip reading roster in one more case
queryidfrom MAM fin element
mod_mqtt: When deregistering XMPP account, close its MQTT sessions
mod_muc: Take in account subscriber’s affiliation when checking access to moderated room
mod_muc: Use monitors to track online and hard-killed rooms
mod_muc: When occupant is banned, remove his subscriptions too
mod_privacy: Make fetching roster lazy
mod_pubsub: Don’t fail on PEP unsubscribe
mod_vcard: Obtain and provide photo type in vCard LDAP