ejabberd 16.04

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

Hi thanks for your suggestion, the fact is that Im trying to use ejabberd in elixir. When I make a `mix deps.get`, ejabberd is a dependency of my project and stringprep is a dependency of ejabberd. In the compile step `mix compile`, mix try to compile every fetched dependencies, including stringprep. I don’t know how to bypass this step.
Thanks.