Conduit is a simple, fast and reliable chat server powered by Matrix https://conduit.rs
Find a file
Benjamin Lee 9eb0784f6f don't return extra member count or e2ee device updates from sync
Previously, we were returning redundant member count updates or encrypted
device updates from the /sync endpoint in some cases. The extra member
count updates are spec-compliant, but unnecessary, while the extra
encrypted device updates violate the spec.

The refactor necessary to fix this bug is also necessary to support
filtering on state events in sync.

Details:

Joined room incremental sync needs to examine state events for four
purposes:

 1. determining whether we need to return an update to room member counts
 2. determining the set of left/joined devices for encrypted rooms
    (returned in `device_lists`)
 3. returning state events to the client (in `rooms.joined.*.state`)
 4. tracking which member events we have sent to the client, so they can
    be omitted on future requests when lazy-loading is enabled.

The state events that we need to examine for the first two cases is member
events in the delta between `since` and the end of `timeline`. For the
second two cases, we need the delta between `since` and the start of
`timeline`, plus contextual member events for any senders that occur in
`timeline`. The second list is subject to filtering, while the first is
not.

Before this change, we were using the same set of state events that we are
returning to the client (cases 3/4) to do the analysis for cases 1/2.
In a compliant implementation, this would result in us missing some
relevant member events in 1/2 in addition to seeing redundant member
events. In current conduwuit this is not the case because the set of
events that we return to the client is always a superset of the set that
is needed for cases 1/2. This is because we don't support filtering, and
we have an existing bug[1] where we are returning the delta between
`since` and the end of `timeline` rather than the start.

[1]: https://github.com/girlbossceo/conduwuit/issues/361

Fixing this is necessary to implement filtering because otherwise
we would start missing some member events for member count or encrypted
device updates if the relevant member events are rejected by the filter.
This would be much worse than our current behavior.
2024-05-20 20:55:56 -04:00
.gitea bit of repo cleanup 2024-01-31 21:12:09 -05:00
.github/workflows chore(deps): update cachix/install-nix-action action to v27 2024-05-15 14:39:21 -04:00
.gitlab docs: build docs using mdBook, build in CI, deploy to gitlab pages 2024-03-19 00:17:41 -04:00
bin complement: add -tags="conduwuit_blacklist" 2024-05-12 03:05:34 -04:00
debian fix up systemd unit file, remove chown on config file for debian 2024-05-15 14:31:35 -04:00
docs docker-compose: slight cleanups, correct database paths, fix branding 2024-05-15 14:31:35 -04:00
nix/pkgs nix: simplify isDarwin lib check 2024-05-12 03:05:34 -04:00
src don't return extra member count or e2ee device updates from sync 2024-05-20 20:55:56 -04:00
tests flip order of complement diff checking, update test results 2024-05-15 14:31:35 -04:00
.dockerignore replace all mentions of docker compose v1 2024-04-26 02:03:40 -04:00
.editorconfig chore: add EditorConfig 2024-03-16 00:09:48 -04:00
.envrc envrc: allow loading env vars from .env if it exists 2024-05-06 03:45:10 -04:00
.git-blame-ignore-revs fix git blame ignore revs 2024-03-26 22:24:24 -04:00
.gitignore envrc: allow loading env vars from .env if it exists 2024-05-06 03:45:10 -04:00
.gitlab-ci.yml fix gitlab ci 2024-05-15 14:31:35 -04:00
audit.toml allow RUSTSEC-2020-0016 due to hot lib reload 2024-04-26 02:03:40 -04:00
book.toml misc docs updates and ci path-ignore again 2024-04-26 02:03:40 -04:00
Cargo.lock downgrade zlib/libz-sys to 1.1.16 as it breaks nix 2024-05-17 03:42:25 -04:00
Cargo.toml downgrade zlib/libz-sys to 1.1.16 as it breaks nix 2024-05-17 03:42:25 -04:00
clippy.toml raise too-many-lines-threshold to 700 (for now?) 2024-03-26 22:24:24 -04:00
CODE_OF_CONDUCT.md remove nightly only feature, small housekeeping stuff 2023-11-29 21:59:18 -05:00
conduwuit-example.toml correct default database path to /var/lib/conduwuit 2024-05-15 14:31:35 -04:00
CONTRIBUTING.md docs: update differences.md 2024-05-09 12:34:50 -04:00
default.nix feat: support non-flake users 2024-02-11 21:56:55 -05:00
engage.toml engage(lychee): check all markdown files too, enable verbose mode 2024-05-06 03:45:10 -04:00
flake.lock nix: bump complement input for conduwuit support 2024-05-15 14:31:35 -04:00
flake.nix nix: switch to fork of rocksdb input 2024-05-06 03:45:10 -04:00
LICENSE remove nightly only feature, small housekeeping stuff 2023-11-29 21:59:18 -05:00
README.md docs: add my selfhosted forgejo mirror 2024-05-09 12:34:50 -04:00
renovate.json stop excluding http deps from renovate !!!! 2024-04-26 02:03:40 -04:00
rust-toolchain.toml chore: bump MSRV to 1.77.0 as 1.78.0 came out 2024-05-06 03:45:10 -04:00
rustfmt.toml use chain_width 60 2024-03-26 22:24:24 -04:00

conduwuit

main / stable: CI and Artifacts

a very cool, featureful fork of Conduit

Visit the Conduwuit documentation for more information.

What is Matrix?

Matrix is an open network for secure and decentralized communication. Users from every Matrix homeserver can chat with users from all other Matrix servers. You can even use bridges (also called Matrix Appservices) to communicate with users outside of Matrix, like a community on Discord.

What is the goal?

An efficient Matrix homeserver that's easy to set up and just works. You can install it on a mini-computer like the Raspberry Pi to host Matrix for your family, friends or company.

Can I try it out?

An official conduwuit server ran by me is available at transfem.dev (element.transfem.dev / cinny.transfem.dev)

transfem.dev is a public homeserver that can be used, it is not a "test only homeserver". This means there are rules, so please read the rules: https://transfem.dev/homeserver_rules.txt

transfem.dev is also listed at servers.joinmatrix.org

What is the current status?

conduwuit is a hard fork of Conduit which is in beta, meaning you can join and participate in most Matrix rooms, but not all features are supported and you might run into bugs from time to time.

Contact

If you run into any question, feel free to

Donate

Original repo and Matrix room picture was from bran (<3). Current banner image and logo is directly from this cohost post.

Is it conduwuit or Conduwuit?

Both, but I prefer conduwuit.

Mirrors of conduwuit