Prosodical Thoughts

News, announcements and thoughts from the Prosody IM team

Prosody 0.11.3 released

by The Prosody Team
Tags: release

We are pleased to announce a new minor release from our stable branch.

This is a bugfix release for the stable 0.11 branch. It is recommended for all users of 0.11.x to upgrade.

Important note for those upgrading: Previous releases did not automatically expire messages from group chat (MUC) archives, so if mod_muc_mam was loaded and enabled for a MUC, archives would grow indefinitely. This is not what most deployments want, therefore automatic expiry is now implemented and enabled with a default 7 day retention. You can configure this with the muc_log_expires_after configuration option, which can be set to "never" to restore the old behaviour and preserve any existing logs older than 7 days.

A summary of changes in this release:

Fixes and improvements

  • MUC: Advertise XEP-0410 support
  • mod_muc_mam: Import cleanup mechanism from mod_mam (fixes #672: mod_muc_mam: Archive expiry)
  • mod_bosh: Handle missing wait attribute (fixes #1288: BOSH: Traceback on missing ‘wait’ attribute)
  • mod_storage_sql: Handle SQLite DELETE with LIMIT being optional (fixes #1359: Sqlite3 archive_store:delete error in prepared statement)
  • mod_c2s: Fixed #1313: attempt to call a field ‘data’ (a nil value))
  • net.server_epoll: Restore wantread flag after pause (fixes #1354: server_epoll: Race in chunked reads)
  • util.encodings: Allow unassigned code points in ICU mode to match libidn behavior (fixes #1348: Different treatment of unassigned code points between libidn and ICU )
  • util.ip: Add missing netmask for 192.16816 range (fixes #1343)
  • util.hashes: Use HMAC function provided by OpenSSL (fixes #1345: util.hashes: HMAC-SHA-512 implementation broken)
  • net.dns: Close resolv.conf handle when done (fixes #1342)
  • mod_websocket: Clone stanza before mutating (fixes #1398: mod_websocket leaks explicit xmlns attr)
  • mod_announce: Check for admin on current virtualhost instead of global (fixes #1365: “host admins” should be able to use mod_announce as well as “global admins”) (thanks yc)
  • mod_blocklist: Trigger resend of presence when unblocking a contact (fixes #1380: Prosody does not send presence when unblocking (XEP-0191))
  • mod_vcard_legacy: Multiple improvements (fixes #1289: mod_vcard_legacy upgrade experience):
    • mod_vcard_legacy: Don’t overwrite existing PEP data
    • mod_vcard_legacy: Handle partial migration
    • mod_vcard_legacy: Allow disabling vcard conversion
    • mod_vcard_legacy: Adapt node defaults to number of avatars
  • mod_muc_mam: Strip the stanza ‘to’ attribute (fixes #1259: [muc_mam] forwarded stanza has a “to” attribute while spec says it MUST NOT)
  • util.pubsub: Validate node configuration on node creation (fixes #1328: Pubsub: Node configuration not validated on node creation)
  • mod_pep/mod_pubsub: Simplify configuration for storage of node data (fixes #1320)
  • MUC: Fix delay@from to be room JID (fixes #1416: MUC: Wrong delay@from on historic messages)
  • mod_mam/mod_muc_mam: Cache last date that archive owner has messages to reduce writes (fixes #1368: Archive cleanup doubles number of storage access)
  • mod_mam: Perform message expiry based on building an index by date (backport of 39ee70fbb009 from trunk)

Minor changes

  • net.server_epoll: Backport timer optimization from trunk (see #1388)
  • mod_storage_memory: Replace query function with one based on storage_internal (fixes #1322: mod_storage_memory does not support ‘key’ querys)
  • net.server_epoll: Rename handshake_timeout to ssl_handshake_timeout (fixes #1319: net.server_epoll uses handshake_timeout instead of ssl_handshake_timeout like server_event)
  • mod_storage_memory: Generate ID using standard util (fixes #1326: mod_storage_memory.lua: attempt to concatenate a nil value)
  • MUC: Add error message to error bounces when not joined to room
  • mod_websocket: Log an error if cross_domain_websocket = true is set in a VirtualHost section
  • mod_presence: Revert empty ‘to’ attribute of presence before presence/initial event (fixes #1296: mod_motd does not send MOTD set in configuration on Prosody versions 10.x or 11.x)
  • mod_pubsub: Support requests for multiple items (fixes #1305: pubsub: MUST allow multiple items to be specified)
  • net.server_epoll: Use send_timeout for write timout like other implementations (fixes #1316: net.server_epoll uses write_timeout where other implementations use send_timeout)
  • util.sql: Ignore if tables and indices already exist on creation (fixes #1064: SQL table creation query fails when tables already exist)
  • net.server_epoll: Skip delayed continuation read on paused connections
  • net.server_epoll: Handle LuaSec wantread/wantwrite conditions before callbacks (fixes #1333: net.server_epoll handling of ‘wantread’ condition unintentionally resumes paused connection)
  • mod_storage_memory: Implement :user iteration API
  • util.serialization: Cache default serialization instance (fixes #1389: util.serialization: Creates new serializer instance on each call)
  • ‘prosodyctl about’ improvements:
    • Report version of LuaDBI installed
    • Report configured network backend
  • util.random: Handle unlikely read errors from /dev/urandom (see #1313)
  • configure: Handle lua being found in /bin (workaround for #1353)


As usual, download instructions for many platforms can be found on our download page

If you have any questions, comments or other issues with this release, let us know!


Prosody is a lightweight and flexible XMPP server designed with ease-of-use and extensibility in mind.

⚛️ Atom feed

Recent Posts