> ## 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 17.06
- URL: https://www.process-one.net/blog/ejabberd-17-06/
- Published: 2017-07-02T22:00:00.000Z
- Updated: 2024-09-19T09:00:45.000Z
- Author: Jérôme Sautret

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](https://github.com/processone/ejabberd.git?ref=process-one.net).

The source package and binary installers are available at [ejabberd XMPP & MQTT server download page](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).