ejabberd 17.06
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
andmisc:decode_base64/1
- Rename
is_user_exists
function touser_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.