ejabberd 16.03: Experimental MIX support, LDAP, SQL and Riak improvements

ejabberd development keeps on its steady pace and we are energized by the growing momentum. Thank you all for your feedback and contributions for that release.

This new ejabberd release contains many many bugfixes, internal improvements, but also, as usual, some new features.

We are very excited by the experimental support for Mediated Information eXchange (MIX) we have added in ejabberd 16.03. This is the future of Multi User Chat for XMPP. While still rough, you can already give it a try and help improve the specification. You can learn more from our previous blog post: Experimental MIX Support for Group Conversations added to ejabberd

We have also started improvements of various third-party backends such a Microsoft SQL Server and LDAP. This is the beginning of a process to improve support of those backend, so please, bare with us and keep us posted on your results.

Changes

Protocols

  • mod_mix: Experimental support for MIX (XEP-0369)
  • mod_http_upload: Add support for XEP-0363 v0.2

Core

  • Use SASL PLAIN authzid as client identity if auth module permits it
  • Make auto generated resources shorter
  • Start ezlib only if required, as it’s optional
  • Make it possible to get virtual host of a registered route

LDAP improvements

  • Fix issue getting shared roster
  • Do not call to deprected/undefined functions from mod_shared_roster_ldap
  • Proper naming for LDAP test function for shared roster

SQL databases support

  • New parse transform for SQL queries, use prepare/execute calls with Postgres
  • Support for run-time SQL queries selection depending on DBMS version
  • In SQL files create Users table with SCRAM support by default
  • Do not auto append IP suffix to usernames
  • Fix some LIMIT related problems with MSSQL
  • Update Microsoft SQL Server schema

Riak

  • Add support for Riak authentication
  • Fix is_connected/0 function
  • Keep alive Riak connections by default

API and Commands

  • Add support for ReST admin commands that are only restricted by source IP. This is key for easy integration with other backend using ReST API.
  • Fix add_commands and remove_commands options
  • Pass noauth when auth isn’t provided
  • Improve ban_account command to work with other DBs than Mnesia
  • Escape quoting node name for ejabberdctl ping
  • Bare JID in ‘from’ of Roster Push (RFC 6121 section 2.1.6) in mod_admin_extra
  • Fix result type of “connected_users_info” command
  • New command delete_mnesia deletes all tables that can be exported. This is useful after you have migrated to another backend, like SQL.

PubSub

  • Unregister route at the very end
  • Define PubSub node configuration per route/host explicitly
  • Fix config fetch and pubsub disco after host/serverhost cleanup

Admin and build chain

  • Update OTP release to use R17.5 and drop release 17.1
  • Compile ejabberd_config early to stop undefined behaviour warnings
  • Fix start via systemd
  • Fixed type specifications for ‘rebar doc’
  • Specify lacking nodename in ejabberdctl

Dependencies

  • Update p1_pgsql to 1.1.0: This add support for prepared statements.
  • Uptate fast_yaml to 1.0.3: This improves the error reporting on syntax errors in Yaml configuration file.
  • Use the v0.2 release of luerl instead of a commit.

Test framework

  • Add Coveralls support
  • Add ability to run the ejabberd test suite in a modular way. You can now run the test suite, even if you only have a a single backend locally.

Other

  • mod_mam: Don’t store watchdog notifications in MAM archives
  • mod_multicast: Fix Addresses element which lacked others local destinations
  • mod_offline: Mark get_queue_length obsolete, and use count_offline_messages
  • Update Gallician translation

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.

Leave a Comment