ejabberd 17.06

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

ejabberd 17.06 includes a lot of improvements over the previous 17.04 release. To name the most important ones: new caching system, Riak support for several modules and introduction of Certificate Manager.

Certificate Manager is a feature that has been requested by many organisations, allowing administrators to manage their certificate more easily. From now, starting ejabberd with an invalid certificate will dump a clear entry in ejabberd log file, explaining what’s wrong. Upcoming ACME support will further refine these improvements we’ve worked on early this year to give our users a great experience with certificate management.

The new cache system is also a new component that allows fine tuning of ejabberd performance for either small systems or large scale servers. To use data cache for a supported module, you need to set the module option use_cache. You also have the possibility to define a maximum number of cache entries and/or maximum life time of cached data, so you keep control on your memory use. Example:

modules:
  mod_roster:
    use_cache: true
    cache_size: 10000
    cache_life_time: 3600  # 1 hour

The cleanup tasks on all ejabberd API also continue, consider checking against few methods rename.

Changes

API

  • Deprecate misc:encode_base64/1 and misc:decode_base64/1
  • Rename is_user_exists function to user_exists
  • Allow api access on both ipv4 and 6 loopback addresses
  • Fix invalid argument in get_messages_susbset

Admin

  • Refactor ejabberdctl
  • Improve ejabberdctl parameters parsing
  • Quote all paths to allow spaces in directory names
  • update-deps-releases.pl: Show operations to perform before asking to apply them
  • Fix Salt import from prosody SCRAMmed password

Configuration

  • Validate module options on start_module/2
  • Validate new options before module reloading
  • Validate second-level options
  • Introduce iqdisc global option
  • stream_management listen option deprecated, use mod_stream_mgmt
  • Check presence of some files during option validation
  • Speedup configuration options lookup
  • Validate all certfiles on startup
  • Only validate certfiles if public_key:short_name_hash/1 is available
  • Introduce Certficate Manager

Commands

  • Add clear_cache admin command
  • Parse correctly presence_broadcast option in change_room_option command
  • Describe command arguments and results in mod_muc_admin
  • Improve export2sql explanation; remove obsolete and duplicated command
  • Fix and document push_roster_all command
  • Fix mod_muc_admin command set_room_affiliation
  • Fix invalid {args,result}_examples in mod_muc_admin
  • Fix srg_user_add/del for non-Mnesia database backends
  • Make ext_mod api return rescode

Compilation

  • Erlang 17.5 or higher is required
    (ejabberd_c2s needs latest maps fixes from OTP-17, see OTP-12402 and OTP-12623)
  • Add --enable-system-deps configure option
  • Add --enable-stun and --enable-sip configure options

Core

  • Speedup Mnesia tables initialization
  • Improve Mnesia tables creation and transformation
  • Improve ejabberd_c2s:close()
  • ejabberd_c2s: Don’t close session on stream resume
  • Speedup loading of translation files
  • Fix ejabberd_router:is_my_route/1
  • Don’t let a receiver crash if a controller is unavailable
  • Fix OTP-17.5 support
  • websocket: Catch exception that may happen when sending data over websocket

Databases

  • New sql_connect_timeout option
  • New sql_query_timeout option
  • Get rid of sql_queries.erl
  • Use round-robin algorithm when selecting worker from DB pool
  • Add Riak as BOSH RAM backend
  • Add Riak as mod_proxy65 RAM backend
  • Add Riak as mod_carboncopy RAM backend
  • Add Riak as router RAM backend
  • Add Riak as session manager RAM backend
  • Fix cleaning of Riak route table
  • Add pubsub import from prosody/metronome
  • Fix username in mam export
  • Fix Salt import from prosody SCRAMmed password
  • In offline export to SQL, first write all DELETE, later all INSERT

Cache

  • Implement cache for mod_announce
  • Implement cache for mod_private
  • Implement cache for mod_privacy/mod_blocking
  • Implement cache for mod_last
  • Implement cache for mod_vcard and mod_vcard_xupdate
  • Implement cache for roster
  • Add cache options to the validator
  • Use cache for authentication backends
  • Use new cache API in mod_shared_roster_ldap
  • Use new cache API in ejabberd_oauth
  • Use new cache API in mod_mam
  • Use new cache API in mod_caps
  • Use cache in front of Redis/SQL RAM backends

Modules

  • mod_http_upload: Add support for HTTP File Upload 0.3.0
  • mod_mam: Added export function
  • mod_metrics: Don’t leak with UDP sockets
  • mod_metrics: New options ip and port
  • mod_muc: Allow a room admin to un/subscribe another JID
  • mod_offline: Don’t store messages via a single process
  • mod_offline: Make sure only jabber:x:event tag is present in offline event
  • mod_register: New option ‘access_remove’ ACL
  • mod_stream_mgmt: Preserve stanza count on timeout
  • mod_vcard_ldap: Parse ldap_uids like in eldap_utils
  • mod_client_state: Reset state on session resume
  • mod_metrics: Fix IP address parsing
  • mod_pubsub: Avoid useless calls on simples subscriptions
  • mod_block_strangers: Add allow_local_users option

Elixir

  • Update elixir to v1.4.4

Installer

  • Upgrade OTP to 19.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 ejabberd XMPP & MQTT server download page.

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