> ## 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 16.04
- URL: https://www.process-one.net/blog/ejabberd-16-04/
- Published: 2016-04-28T22:00:00.000Z
- Updated: 2024-09-19T13:07:48.000Z
- Author: Jérôme Sautret

This new ejabberd release includes bugfixes, and also two major source code refactorings: one for ejabberd commands, and other for database specific code in many modules. This version is doing lot of under the scene changes to prepare further improvements and refactoring.

For consistency, modules configured to use an SQL RDBMS are named sql instead of the more confusing odbc. You are not required to modify your configuration file, old style ‘odbc’ keyword works, but you may want to update it and replace ‘odbc’ with ‘sql’.

We have also introduced a straightforward and new way for developers to add data / backend modules. If a developer need to add backend `mystore` to module mod\_example, they only need to create `mod_example_mystore`, implement it with behaviour `mod_example` and add `db_type: mystore` in configuration of that module.

Erlang/OTP 18.3 is now used in all official installers and packages available in the download area.

## Changes

### API Commands

- Add API versionning
- Changed error handling, based on exception
- ejabberd Command bugfixes
- Accept commands: add\_commands syntax (along commands: – add\_commands)
- Fix mod\_muc\_admin:get\_room\_options and set\_room\_affiliation
- mod\_http\_api: support ‘open’ ejabberd commands

### Databases

- Split modules DB specific code into separate modules
- Rename “odbc” to “sql” everywhere
- Rename “internal” auth to “mnesia”
- Improve detection of databases supported by modules
- Switch to varchar(64) in mysql user.server/salt as text can’t have default values
- ‘serverkey’ and ‘salt’ should have empty string as default

### XMPP

- Drop headline messages sent to offline resources
- Don’t omit bounces for messages of type “result”
- Match namespace when checking for chat states
- Fix check for standalone chat state notifications
- Disable TLS compression for s2s by default
- Make sure that ejabberd\_sm sid are unique
- Send stream trailer at the very end of the processing
- Generate shorted jid for anonymous connections
- Fix anonymous SASL auth

### ejabberdctl

- Add option to migration script to delete data from a table after they have been successfully moved to SQL database: `ejabberdctl delete_mnesia example.org`
- Remove useless variable and quote EPMD and SPOOL\_DIR
- Fix node ping command
- Use UUID for ctl node name
- Remove –auth in ejabberd\_ctl.erl as it’s useless, still useful for mod\_rest
- Force ERL\_PATH for Elixir console

### Pubsub

- Fix use of pubsub node plugin when configured with default\_node\_config
- Set default value for pubsub#itemreply option
- Add subscribe/unsubscribe hooks

### Internal

- Add mod\_mam header file
- Replace ?ERR\_\* macros with ?ERRT\_\*
- change mod\_ping Timers using maps instead of dict

### Dependencies

- Update p1\_utils to 1.0.4: Adds p1\_time\_compat:unique\_timestamp()
- Uptate fast\_tls to 1.0.3: Prevent buffer overflows and allocation failures
- Uptate stringprep to 1.0.3: Fix compilation on Windows and error message
- Uptate stun to 1.0.3: Use fast\_tls 1.0.3
- Uptate esip to 1.0.4: Use fast\_tls 1.0.3

## 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 [ProcessOne](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).