> ## Content Index
> Fetch the complete content index at: https://www.process-one.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# ejabberd 21.07
- URL: https://www.process-one.net/blog/ejabberd-21-07/
- Published: 2021-07-26T13:48:00.000Z
- Updated: 2024-09-16T13:49:07.000Z
- Description: This new ejabberd 21.07 release includes many improvements and bugfixes in more than 130 commits.
- Author: Jérôme Sautret

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](https://github.com/processone/ejabberd/commit/95fa43aa96514b7e8b77fa7c29d2c0b5b1c1331a?ref=process-one.net).

### MySQL Backend Patch for scram-sha512

The MySQL database schema has improved to support scram-sha512 ([#3582](https://github.com/processone/ejabberd/issues/3582?ref=process-one.net))

If you have a MySQL database, you can update your schema with:

```sql
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](https://docs.ejabberd.im/developer/ejabberd-api/admin-api/?ref=process-one.net#srg-create).

### 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](https://docs.ejabberd.im/admin/installation/?ref=process-one.net#production-release) documentation section.

Are you curious about what a release is in the Erlang/OTP world? Check [Adopting Erlang](https://adoptingerlang.org/docs/production/releases/?ref=process-one.net) and [Rebar3](https://rebar3.org/docs/deployment/releases/?ref=process-one.net).

### 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](https://docs.ejabberd.im/admin/installation/?ref=process-one.net#development-release) documentation section.

By the way, Makefile has so many targets that now there’s a summary of them:

```shell
make help

```

### Support to use mix in `configure`

The `configure` script supports rebar, rebar3 and [Elixir](https://elixir-lang.org/?ref=process-one.net)‘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:

```shell
./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/` and `vars.config` to Hex package files ([#3251](https://github.com/processone/ejabberd/issues/3251?ref=process-one.net))
- **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](https://github.com/processone/ejabberd/issues/3612?ref=process-one.net))
- Added experimental support for **GitHub Codespaces**
- Switch test service from TravisCI to **GitHub Actions** ([#3613](https://github.com/processone/ejabberd/issues/3613?ref=process-one.net))

#### Commands:

- Display extended error message in **ejabberdctl** ([#3584](https://github.com/processone/ejabberd/issues/3584?ref=process-one.net))
- Remove SMP option from ejabberdctl.cfg, `-smp` was removed in OTP 21 ([#3560](https://github.com/processone/ejabberd/issues/3560?ref=process-one.net))
- `create_room`: After creating room, store in DB if it’s persistent ([#3632](https://github.com/processone/ejabberd/issues/3632?ref=process-one.net))
- `help`: Major changes in its usage and output ([#3569](https://github.com/processone/ejabberd/issues/3569?ref=process-one.net))
- `srg_create`: Update to use `label` parameter instead of `name` ([#3578](https://github.com/processone/ejabberd/issues/3578?ref=process-one.net))

#### Modules:

- `ejabberd_listener`: New `send_timeout` option
- `mod_mix`: Improvements to update to 0.14.1 ([#3634](https://github.com/processone/ejabberd/issues/3634?ref=process-one.net))
- `mod_muc_room`: Don’t leak owner JIDs ([#3615](https://github.com/processone/ejabberd/issues/3615?ref=process-one.net))
- `mod_multicast`: Routing for more MUC packets
- `mod_multicast`: Correctly strip only other bcc addresses ([#3639](https://github.com/processone/ejabberd/issues/3639?ref=process-one.net))
- `mod_mqtt`: Allow shared roster group placeholder in mqtt topic ([#3566](https://github.com/processone/ejabberd/issues/3566?ref=process-one.net))
- `mod_pubsub`: Several fixes when using PubSub with RSM ([#3618](https://github.com/processone/ejabberd/issues/3618?ref=process-one.net))([#3621](https://github.com/processone/ejabberd/issues/3621?ref=process-one.net))
- `mod_push`: Handle MUC/Sub events correctly ([#3565](https://github.com/processone/ejabberd/issues/3565?ref=process-one.net))
- `mod_shared_roster`: Delete cache after performing change to be sure that in cache will be up to date data ([#3578](https://github.com/processone/ejabberd/issues/3578?ref=process-one.net))
- `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](https://github.com/processone/ejabberd/issues/3622?ref=process-one.net))

#### SQL:

- MySQL Backend Patch for **scram-sha512** ([#3582](https://github.com/processone/ejabberd/issues/3582?ref=process-one.net))
- **SQLite**: When exporting for SQLite, use its specific escape options ([#2576](https://github.com/processone/ejabberd/issues/2576?ref=process-one.net))
- **SQLite**: Minor fixes for new\_sql\_schema support ([#3303](https://github.com/processone/ejabberd/issues/3303?ref=process-one.net))
- `mod_privacy`: Cast as boolean when exporting privacy\_list\_data to **PostgreSQL** ([#1773](https://github.com/processone/ejabberd/issues/1773?ref=process-one.net))
- `mod_mqtt`: Add mqtt\_pub table definition for **MSSQL** ([#3097](https://github.com/processone/ejabberd/issues/3097?ref=process-one.net))
- `mod_shared_roster`: Add missing indexes to `sr_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](https://github.com/processone/ejabberd.git?ref=process-one.net).

The source package and binary installers are available at [ejabberd XMPP & MQTT server download page](https://www.process-one.net/en/ejabberd/downloads/).

If you suspect that you’ve found a bug, please search or fill a bug report on [Github](https://github.com/processone/ejabberd/issues?ref=process-one.net).