feature: Implement MSC4373 (Server EDU type opt-out) #1135
Labels
No labels
Bug
Cherry-picking
Database
Dependencies
Dependencies/Renovate
Difficulty
Easy
Difficulty
Hard
Difficulty
Medium
Documentation
Enhancement
Good first issue
Help wanted
Inherited
Matrix/Administration
Matrix/Appservices
Matrix/Auth
Matrix/Client
Matrix/Core
Matrix/Federation
Matrix/Hydra
Matrix/MSC
Matrix/Media
Meta
Meta/CI
Meta/Packaging
Priority
Blocking
Priority
High
Priority
Low
Security
Status/Blocked
Status
Confirmed
Status
Duplicate
Status
Invalid
Status
Needs Investigation
To-Merge
Wont fix
old/ci/cd
old/rust
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
continuwuation/continuwuity#1135
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
https://github.com/matrix-org/matrix-spec-proposals/pull/4373 (rendered)
This proposal allows us to cut down on bandwidth by both finding out what EDUs to not send to servers, and also tell other servers what we don't want to receive. This will also help with CPU and memory usage since we can simply avoid wasting time sending data to other servers or receiving it when the recipient simply doesn't care about the data and will just discard it anyway.
Returning our accepted EDU types should be pretty easy considering we already have config options for inbound EDUs like typing and presence:
#allow_incoming_typing = true#allow_incoming_presence = trueAll that would need is a ruwuma update to introduce the response body structure.
Filtering outgoing EDUs probably wouldn't be too much difficult. A database cache probably wouldn't be needed for this, an in-memory cached filled in by requesting the destination's EDU filter before sending the first transaction tagged with a timestamp to allow expiry would probably be sufficient, and modifying the sending service's
select_edusfunction to filter out unwanted EDUs would also likely be trivial.