Skip to content

Releases: matrix-org/dendrite

Dendrite 0.9.7

09 Sep 14:01
e8687f6
Compare
Choose a tag to compare

Features

  • Initial supporting code to enable full-text search has been merged (although not ready for use yet)
  • Newly created rooms now have higher default power levels for enabling encryption, setting server ACLs or sending tombstone events
  • Incoming signing key updates over federation are now queued in JetStream for processing, so that they cannot be dropped accidentally

Fixes

  • A race condition between the roomserver output events being generated, forward extremities being updated and room info being updated has been fixed
  • Appservices will no longer receive invite events which they are not interested in, which caused heavy load in some cases or excessive request sizes in others
  • A bug in state resolution v2 where events could incorrectly be classified as control events has been fixed
  • A bug in state resolution v2 where some specific events with unexpected non-empty state keys are dropped has been fixed
  • A bug in state resolution v2 when fetching auth events vs partial state has been fixed
  • Stale device lists should now be handled correctly for all user IDs, which may help with E2EE reliability
  • A number of database writer issues have been fixed in the user API and sync API, which should help to reduce database is locked errors with SQLite databases
  • Database migrations should now be detected more reliably to prevent unexpected errors at startup
  • A number of minor database transaction issues have been fixed, particularly for assigning NIDs in the roomserver, cleaning up device keys and cleaning up notifications
  • The database query for finding shared users in the sync API has been optimised, using significantly less CPU time as a result

Dendrite 0.9.6

01 Sep 13:49
304acd7
Compare
Choose a tag to compare

Features

  • The appservice API has been refactored for improved performance and stability
    • The appservice database has been deprecated, as the roomserver output stream is now used as the data source instead
  • The generate-config tool has been updated to support additional scenarios, i.e. for CI configuration generation and generating both monolith and polylith skeleton config files

Fixes

  • The username length check has been fixed on new account creation
  • The length of the type, sender, state_key and room_id fields in events are now verified by number of codepoints rather than bytes, fixing the "Cat Overflow" bug
  • UTF-16 surrogate handling in the canonical JSON implementation has been fixed
  • A race condition when starting the keyserver has been fixed
  • A race condition when configuring HTTP servers and routing at startup has been fixed
  • A bug where the incorrect limit was used for lazy-loading memberships has been fixed
  • The number of push notifications will now be sent to the push gateway
  • A missing index causing slow performance on the sync API send-to-device table has been added (contributed by PiotrKozimor)
  • Event auth will now correctly check for the existence of the "creator" field in create events

Dendrite 0.9.5

25 Aug 13:14
ed79e86
Compare
Choose a tag to compare

Fixes

  • The roomserver will now correctly unreject previously rejected events if necessary when reprocessing
  • The handling of event soft-failure has been improved on the roomserver input by no longer applying rejection rules and still calculating state before the event if possible
  • The federation /state and /state_ids endpoints should now return the correct error code when the state isn't known instead of returning a HTTP 500
  • The federation /event should now return outlier events correctly instead of returning a HTTP 500
  • A bug in the federation backoff allowing zero intervals has been corrected
  • The create-account utility will no longer error if the homeserver URL ends in a trailing slash
  • A regression in /sync introduced in 0.9.4 should be fixed

Dendrite 0.9.4

19 Aug 11:46
56b55a2
Compare
Choose a tag to compare

Fixes

  • A bug in the roomserver around handling rejected outliers has been fixed
  • Backfilled events will now use the correct history visibility where possible
  • The device list updater backoff has been fixed, which should reduce the number of outbound HTTP requests and Failed to query device keys for some users log entries for dead servers
  • The /sync endpoint will no longer incorrectly return room entries for retired invites which could cause some rooms to show up in the client "Historical" section
  • The /createRoom endpoint will now correctly populate is_direct in invite membership events, which may help clients to classify direct messages correctly
  • The create-account tool will now log an error if the shared secret is not set in the Dendrite config
  • A couple of minor bugs have been fixed in the membership lazy-loading
  • Queued EDUs in the federation API are now cached properly

Dendrite 0.9.3

15 Aug 09:57
bcdbd5c
Compare
Choose a tag to compare

Important

  • This is a security release to fix a vulnerability within event auth, affecting all versions of Dendrite before 0.9.3. Upgrading to this version is highly recommended. For more information, see here.

Fixes

  • Dendrite will now correctly parse the "events_default" power level value for event auth.

Dendrite 0.9.2

12 Aug 14:18
ef7262a
Compare
Choose a tag to compare

Features

  • Dendrite now supports history visibility on the /sync, /messages and /context endpoints
    • It should now be possible to view the history of a room in more cases (as opposed to limiting scrollback to the join event or defaulting to the restrictive "join" visibility rule as before)
  • The default room version for newly created rooms is now room version 9
  • New admin endpoint /_dendrite/admin/resetPassword/{userID} has been added, which replaces the -reset-password flag in create-account
  • The create-account binary now uses shared secret registration over HTTP to create new accounts, which fixes a number of problems with account data and push rules not being configured correctly for new accounts
  • The internal HTTP APIs for polylith deployments have been refactored for correctness and consistency
  • The federation API will now automatically clean up some EDUs that have failed to send within a certain period of time
  • The /hierarchy endpoint will now return potentially joinable rooms (contributed by texuf)
  • The user directory will now show or hide users correctly

Fixes

  • Send-to-device messages should no longer be incorrectly duplicated in /sync
  • The federation sender will no longer create unnecessary destination queues as a result of a logic error
  • A bug where database migrations may not execute properly when upgrading from older versions has been fixed
  • A crash when failing to update user account data has been fixed
  • A race condition when generating notification counts has been fixed
  • A race condition when setting up NATS has been fixed (contributed by brianathere)
  • Stale cache data for membership lazy-loading is now correctly invalidated when doing a complete sync
  • Data races within user-interactive authentication have been fixed (contributed by tak-hntlabs)

Dendrite 0.9.1

03 Aug 16:42
a2bed25
Compare
Choose a tag to compare

Fixes

  • Upgrades a dependency which caused issues building Dendrite with Go 1.19
  • The roomserver will no longer give up prematurely after failing to call /state_ids
  • Removes the faulty room info cache, which caused of a number of race conditions and occasional bugs (including when creating and joining rooms)
  • The media endpoint now sets the Cache-Control header correctly to prevent web-based clients from hitting media endpoints excessively
  • The sync API will now advance the PDU stream position correctly in all cases (contributed by sergekh2)
  • The sync API will now delete the correct range of send-to-device messages when advancing the stream position
  • The device list changed key in the /sync response should now return the correct users
  • A data race when looking up missing state has been fixed
  • The /send_join API is now applying stronger validation to the received membership event

Dendrite 0.9.0

01 Aug 16:34
3d51624
Compare
Choose a tag to compare

Please note that Go 1.18 is now required to build this version.

Features

  • Dendrite now uses Ristretto for managing in-memory caches
    • Should improve cache utilisation considerably over time by more intelligently selecting and managing cache entries compared to the previous LRU-based cache
    • Defaults to a 1GB cache size if not configured otherwise
    • The estimated cache size in memory and maximum age can now be configured with new configuration options to prevent unbounded cache growth
  • Added support for serving the /.well-known/matrix/client hint directly from Dendrite
  • Refactored membership updater, which should eliminate some bugs caused by the membership table getting out of sync with the room state
  • The User API is now responsible for sending account data updates to other components, which may fix some races and duplicate account data events
  • Optimised database query for checking whether a remote server is allowed to request an event over federation without using anywhere near as much CPU time (PostgreSQL only)
  • Database migrations have been refactored to eliminate some problems that were present with goose and upgrading from older Dendrite versions
  • Media fetching will now use the /v3 endpoints for downloading media from remote homeservers
  • HTTP 404 and HTTP 405 errors from the client-facing APIs should now be returned with CORS headers so that web-based clients do not produce incorrect access control warnings for unknown endpoints
  • Some preparation work for full history visibility support

Fixes

  • Fixes a crash that could occur during event redaction
  • The /members endpoint will no longer incorrectly return HTTP 500 as a result of some invite events
  • Send-to-device messages should now be ordered more reliably and the last position in the stream updated correctly
  • Parsing of appservice configuration files is now less strict (contributed by Kab1r)
  • The sync API should now identify shared users correctly when waking up for E2EE key changes
  • The federation /state endpoint will now return a HTTP 403 when the state before an event isn't known instead of a HTTP 500
  • Presence timestamps should now be calculated with the correct precision
  • A race condition in the roomserver's room info has been fixed
  • A race condition in the sync API has been fixed

Dendrite 0.8.9

01 Jul 11:01
b5c55fa
Compare
Choose a tag to compare

Features

  • Incoming device list updates over federation are now queued in JetStream for processing so that they will no longer block incoming federation transactions and should never end up dropped, which will hopefully help E2EE reliability
  • The /context endpoint now returns "start" and "end" parameters to allow pagination from a context call
  • The /messages endpoint will no longer return "end" when there are no more messages remaining
  • Deactivated user accounts will now leave all rooms automatically
  • New admin endpoint /_dendrite/admin/evacuateUser/{userID} has been added for forcing a local user to leave all joined rooms
  • Dendrite will now automatically attempt to raise the file descriptor limit at startup if it is too low

Fixes

  • A rare crash when retrieving remote device lists has been fixed
  • Fixes a bug where events were not redacted properly over federation
  • The /invite endpoints will now return an error instead of silently proceeding if the user ID is obviously malformed

Dendrite 0.8.8

09 Jun 11:19
8379757
Compare
Choose a tag to compare

Features

  • The performance of state resolution has been increased significantly for larger rooms
  • A number of changes have been made to rate limiting:
    • Logged in users will now be rate-limited on a per-session basis rather than by remote IP
    • Rate limiting no longer applies to admin or appservice users
    • It is now possible to configure additional users that are exempt from rate limiting using the exempt_user_ids option in the rate_limiting section of the Dendrite config
  • Setting state is now idempotent via the client API state endpoints

Fixes

  • Room upgrades now properly propagate tombstone events to remote servers
  • Room upgrades will no longer send tombstone events if creating the upgraded room fails
  • A crash has been fixed when evaluating restricted room joins