ejabberd 21.04
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 and 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;
Windows support
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
API Commands
- 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
- Update sql_queryrecord to handle the Erlang/OTP 24 compiler reports
- Updated dependencies to fix Dialyzer warnings
Miscellaneous
- 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
Modules:
- 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
- mod_mam: Remove- 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_pubsub: Fix- gen_pubsub_node:get_statereturn value
- mod_vcard: Obtain and provide photo type in vCard LDAP
 
       
