> ## 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 16.02: Happy Leap Day
- URL: https://www.process-one.net/blog/ejabberd-16-02-happy-leap-day/
- Published: 2016-02-28T23:00:00.000Z
- Updated: 2024-09-19T14:24:16.000Z
- Description: To celebrate leap day, we are happy to release ejabberd 16.02, which mark huge leap for ejabberd both in terms of features and improvements.
- Author: Jérôme Sautret

In terms of features, we see in this release the culmination of our work in several areas:  
– Support for flexible offline retrieval, aka [XEP-0013](https://www.xmpp.org/extensions/xep-0013.html?ref=process-one.net). This is a big win for mobile developers.  
– Improvements on archiving, with Message Archive Management (MAM) now supporting version 0.4.1 of the specifications.  
– Full Elixir compliant packaging with the ability to deploy ejabberd as an [Hex.pm](https://hex.pm/?ref=process-one.net) dependency from your own application. See [ejabberd on hex.pm](https://hex.pm/packages/ejabberd?ref=process-one.net).  
– Performance improvement with faster and more memory efficient XML parsing and TLS encryption. You can also refer to our previous blog post: [ejabberd Massive Scalability: 1 Node — 2+ Million Concurrent Users](https://www.process-one.net/blog/ejabberd-massive-scalability-1node-2-million-concurrent-users/)  
– Better stream compression with the ability to enable stream compression after SASL.  
– Easier adoption of ejabberd with a new migration script from Prosody XMPP servers.

As usual, this version is the product of a great community team work, with special kudos to Holger, Alexey, Evgeny, Pawel, Christophe, Badlop, Mickaël for their large contributions in this release.

That community effort is what makes ejabberd is such a popular project, with 2260+ stars on Github, availability in most Linux distributions and showing amazing number of downloads ! Thank you all !

Here is the full list of changes:

## Changes

### New XMPP Extensions support

- New [Flexible Offline Message Retrieval (XEP-0013)](https://www.xmpp.org/extensions/xep-0013.html?ref=process-one.net) support

### Admin

- New migration script from Prosody to ejabberd
- Fix `--disable-debug` compilation flag
- don’t escape `ERL_OPTIONS`
- Two new global timeouts configurable: `c2s_hibernate`, `receiver_hibernate`
- Make it possible to define `sm_db_type` per virtual host
- configuration checker: Describe option type in code for `domain_balancing` option
- Log failed SQL requests
- Include `mod_muc.hrl` and fix records
- mod\_http\_upload: Expand `docroot` before using it, also expand `@HOST@`

### Commands

- New `import_prosody` command
- Start documenting arguments in `mod_admin_extra` commands
- We added a way to get all ejabberd\_commands, not only those that was registered
- Allow to pass `\n` in argument to `ejabberdctl`
- Add error handling to `send_stanza` command
- Fix format\_result so `get_room_options` command works again after commit reference *aa5caa3*

### Dependencies

- lager is the default (and only) logging module and we removed p1\_logger
- Handle spaces in vsn attribute of app file when installing deps
- Renamed dependencies and modules for consistency but also to reflect huge performance gains:  
. p1\_iconv -> iconv  
. p1\_stringprep -> stringprep  
. p1\_stun -> stun  
. p1\_tls -> fast\_tls  
. p1\_yaml -> fast\_yaml  
. p1\_zlib -> ezlib

### Message Archive Management

- Advertise MUC MAM v0.4.1 in room JID’s `disco#info`
- Add “delete\_old\_mam\_messages” admin command
- Add ‘from’ attribute to tag
- Add “request\_activates\_archiving” option
- Respond to form requests
- Support XEP-0313 v0.2 MUC archive queries
- Check whether MUC message is desired
- Reject -based paging
- Limit result set page size
- Sort messages returned by Mnesia
- Strip existing JID tags from MUC messages
- Expose MUC occupant JID in more cases
- Don’t let outcasts access MUC archive
- Send new preferences when they are set
- Stream management (XEP-0198): Let MAM take care of pending messages

### GroupChat

- Send presence with code 170 in initial presence from MUC
- Add most status codes only to initial MUC presence
- mod\_muc\_room: Don’t expose JIDs in anonymous rooms
- mod\_muc\_room: Let members see admin/owner JIDs

### PubSub

- Fix presence-based delivery
- Make caps warning less confusing
- Fix host/serverhost usage
- Add support of `pubsub#itemreply=publisher`

### Other

- Accept stream compression request after SASL
- Make C2S session establishment optional to better conform to XMPP specifications and still be friendly with older clients.
- MUC: new `regexp_room_id` option to limit possible room names.
- ODBC: Set utf8mb4 charset on MySQL connection to support emoji storage as default.
- LDAP: Improve LDAP shared roster support.
- mod\_register\_web: Allow setting host when deleting account or changing password.
- Rename timestamp\_to\_iso functions in jlib.
- Stream management (XEP-0198): Fix session timeout corner case.
- Several improvements in Elixir support.
- Updated many translations.
- Improve web admin stylesheet to fix rendering issues in some browsers.

### Packaging

- ejabberd is now available as an hex.pm package and can be easily included as a dependency in any Elixir or Erlang application.
- Installers include latest OpenSSL patches.

## 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 [ProcessOne](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).