Synapse 1.20.0rc1 (2020-09-08)
Removal warning
Some older clients used a disallowed character (:
) in the client_secret
parameter of various endpoints. The incorrect behaviour was allowed for backwards compatibility, but is now being removed from Synapse as most users have updated their client. Further context can be found at #6766.
Features
- Add an endpoint to query your shared rooms with another user as an implementation of MSC2666. (#7785)
- Iteratively encode JSON to avoid blocking the reactor. (#8013, #8116)
- Add support for shadow-banning users (ignoring any message send requests). (#8034, #8092, #8095, #8142, #8152, #8157, #8158, #8176)
- Use the default template file when its equivalent is not found in a custom template directory. (#8037, #8107, #8252)
- Add unread messages count to sync responses, as specified in MSC2654. (#8059, #8254, #8270, #8274)
- Optimise
/federation/v1/user/devices/
API by only returning devices with encryption keys. (#8198)
Bugfixes
- Fix a memory leak by limiting the length of time that messages will be queued for a remote server that has been unreachable. (#7864)
- Fix
Re-starting finished log context PUT-nnnn
warning when event persistence failed. (#8081) - Synapse now correctly enforces the valid characters in the
client_secret
parameter used in various endpoints. (#8101) - Fix a bug introduced in v1.7.2 impacting message retention policies that would allow federated homeservers to dictate a retention period that's lower than the configured minimum allowed duration in the configuration file. (#8104)
- Fix a long-standing bug where invalid JSON would be accepted by Synapse. (#8106)
- Fix a bug introduced in Synapse v1.12.0 which could cause
/sync
requests to fail with a 404 if you had a very old outstanding room invite. (#8110) - Return a proper error code when the rooms of an invalid group are requested. (#8129)
- Fix a bug which could cause a leaked postgres connection if synapse was set to daemonize. (#8131)
- Clarify the error code if a user tries to register with a numeric ID. This bug was introduced in v1.15.0. (#8135)
- Fix a bug where appservices with ratelimiting disabled would still be ratelimited when joining rooms. This bug was introduced in v1.19.0. (#8139)
- Fix logging in via OpenID Connect with a provider that uses integer user IDs. (#8190)
- Fix a longstanding bug where user directory updates could break when unexpected profile data was included in events. (#8223)
- Fix a longstanding bug where stats updates could break when unexpected profile data was included in events. (#8226)
- Fix slow start times for large servers by removing a table scan of the
users
table from startup code. (#8271)
Updates to the Docker image
- Fix builds of the Docker image on non-x86 platforms. (#8144)
- Added curl for healthcheck support and readme updates for the change. Contributed by @maquis196. (#8147)
Improved Documentation
- Link to matrix-synapse-rest-password-provider in the password provider documentation. (#8111)
- Updated documentation to note that Synapse does not follow
HTTP 308
redirects due to an upstream library not supporting them. Contributed by Ryan Cole. (#8120) - Explain better what GDPR-erased means when deactivating a user. (#8189)
Internal Changes
- Add filter
name
to the/users
admin API, which filters by user ID or displayname. Contributed by Awesome Technologies Innovationslabor GmbH. (#7377, #8163) - Reduce run times of some unit tests by advancing the reactor a fewer number of times. (#7757)
- Don't fail
/submit_token
requests on incorrect session ID ifrequest_token_inhibit_3pid_errors
is turned on. (#7991) - Convert various parts of the codebase to async/await. (#8071, #8072, #8074, #8075, #8076, #8087, #8100, #8119, #8121, #8133, #8156, #8162, #8166, #8168, #8173, #8191, #8192, #8193, #8194, #8195, #8197, #8199, #8200, #8201, #8202, #8207, #8213, #8214)
- Remove some unused database functions. (#8085)
- Add type hints to various parts of the codebase. (#8090, #8127, #8187, #8241, #8140, #8183, #8232, #8235, #8237, #8244)
- Return the previous stream token if a non-member event is a duplicate. (#8093, #8112)
- Separate
get_current_token
into two since there are two different use cases for it. (#8113) - Remove
ChainedIdGenerator
. (#8123) - Reduce the amount of whitespace in JSON stored and sent in responses. (#8124)
- Update the test federation client to handle streaming responses. (#8130)
- Micro-optimisations to
get_auth_chain_ids
. (#8132) - Refactor
StreamIdGenerator
andMultiWriterIdGenerator
to have the same interface. (#8161) - Add functions to
MultiWriterIdGen
used by events stream. (#8164, #8179) - Fix tests that were broken due to the merge of 1.19.1. (#8167)
- Make
SlavedIdTracker.advance
have the same interface asMultiWriterIDGenerator
. (#8171) - Remove unused
is_guest
parameter from, and add safeguard to,MessageHandler.get_room_data
. (#8174, #8181) - Standardize the mypy configuration. (#8175)
- Refactor some of
LoginRestServlet
's helper methods, and move them toAuthHandler
for easier reuse. (#8182) - Fix
wait_for_stream_position
to allow multiple waiters on same stream ID. (#8196) - Make
MultiWriterIDGenerator
work for streams that use negative values. (#8203) - Refactor queries for device keys and cross-signatures. (#8204, #8205, #8222, #8224, #8225, #8231, #8233, #8234)
- Fix type hints for functions decorated with
@cached
. (#8240) - Remove obsolete
order
field from federation send queues. (#8245) - Stop sub-classing from object. (#8249)
- Add more logging to debug slow startup. (#8264)
- Do not attempt to upgrade database schema on worker processes. (#8266, #8276)