ejabberd 16.04

Jérôme Sautret
· 2 min read
Send by email

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.

The source package and binary installers are available at ProcessOne.

If you suspect that you’ve found a bug, please search or fill a bug report on Github.