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 commandsget_user_subscriptions
: New command for MUC/Subremove_mam_for_user_with_peer
: Fix when removing room archivesend_message
: Fix bug introduced in ejabberd 21.01set_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_query
record to handle the Erlang/OTP 24 compiler reports - Updated dependencies to fix Dialyzer warnings
Miscellaneous
- CAPTCHA: Update
FORM_TYPE
from 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 passingmod_caps
: Don’t request roster when not neededmod_caps
: Skip reading roster in one more casemod_mam
: Removequeryid
from MAM fin elementmod_mqtt
: When deregistering XMPP account, close its MQTT sessionsmod_muc
: Take in account subscriber’s affiliation when checking access to moderated roommod_muc
: Use monitors to track online and hard-killed roomsmod_muc
: When occupant is banned, remove his subscriptions toomod_privacy
: Make fetching roster lazymod_pubsub
: Don’t fail on PEP unsubscribemod_pubsub
: Fixgen_pubsub_node:get_state
return valuemod_vcard
: Obtain and provide photo type in vCard LDAP