| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
| |
This completes the merging of server and client command processing.
|
| |
|
|
|
|
| |
public rooms list (#6899)
|
|
|
| |
The aim here is to move the command handling out of the TCP protocol classes and to also merge the client and server command handling (so that we can reuse them for redis protocol). This PR simply moves the client paths to the new `ReplicationCommandHandler`, a future PR will move the server paths too.
|
|
|
|
|
|
|
|
|
| |
Fixes #6815
Before figuring out whether we should alert a user on MAU, we call get_notice_room_for_user to get some info on the existing server notices room for this user. This function, if the room doesn't exist, creates it and invites the user in it. This means that, if we decide later that no server notice is needed, the user gets invited in a room with no message in it. This happens at every restart of the server, since the room ID returned by get_notice_room_for_user is cached.
This PR fixes that by moving the inviting bit to a dedicated function, that's only called when the server actually needs to send a notice to the user. A potential issue with this approach is that the room that's created by get_notice_room_for_user doesn't match how that same function looks for an existing room (i.e. it creates a room that doesn't have an invite or a join for the current user in it, so it could lead to a new room being created each time a user syncs), but I'm not sure this is a problem given it's cached until the server restarts, so that function won't run very often.
It also renames get_notice_room_for_user into get_or_create_notice_room_for_user to make what it does clearer.
|
| |
|
|
|
|
|
| |
Log warning when filesystem path is used.
Signed-off-by: Martin Milata <martin@martinmilata.cz>
|
| |
|
| |
|
|
|
| |
Let's just call `getrusage` once on each logcontext change, rather than twice.
|
|\
| |
| | |
Only run one background update at a time
|
| | |
|
| |
| |
| |
| |
| |
| | |
By running this stuff with `run_in_background`, it won't be correctly reported
against the relevant CPU usage stats.
Fixes #7202
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Occasionally we could get a federation device list update transaction which
looked like:
```
[
{'edu_type': 'm.device_list_update', 'content': {'user_id': '@user:test', 'device_id': 'D2', 'prev_id': [], 'stream_id': 12, 'deleted': True}},
{'edu_type': 'm.device_list_update', 'content': {'user_id': '@user:test', 'device_id': 'D1', 'prev_id': [12], 'stream_id': 11, 'deleted': True}},
{'edu_type': 'm.device_list_update', 'content': {'user_id': '@user:test', 'device_id': 'D3', 'prev_id': [11], 'stream_id': 13, 'deleted': True}}
]
```
Having `stream_ids` which are lower than `prev_ids` looks odd. It might work
(I'm not actually sure), but in any case it doesn't seem like a reasonable
thing to expect other implementations to support.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This broke in a recent PR (#7024) and is no longer useful due to all
replication clients implicitly subscribing to all streams, so let's
just remove it.
|
|/ |
|
|
|
|
| |
Fixes #7179.
|
|
|
| |
Signed-off-by: Karl Linderhed <git@karlinde.se>
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
If there was an exception setting up one of the attributes of the Homeserver
god object, then future attempts to fetch that attribute would raise a
confusing "Cyclic dependency" error. Let's make sure that we clear the
`building` flag so that we just get the original exception.
Ref: #7169
|
|
|
|
| |
make sure we clear out all but one update for the user
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Remove `conn_id` usage for UserSyncCommand.
Each tcp replication connection is assigned a "conn_id", which is used
to give an ID to a remotely connected worker. In a redis world, there
will no longer be a one to one mapping between connection and instance,
so instead we need to replace such usages with an ID generated by the
remote instances and included in the replicaiton commands.
This really only effects UserSyncCommand.
* Add CLEAR_USER_SYNCS command that is sent on shutdown.
This should help with the case where a synchrotron gets restarted
gracefully, rather than rely on 5 minute timeout.
|
|\
| |
| |
| |
| | |
matrix-org/dbkr/always_send_own_device_list_updates
Always send the user updates to their own device list
|
| | |
|
|\ \
| | |
| | | |
Add tests for outbound device pokes
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
That fallback sets the redirect URL to itself (so it can process the login
token then return gracefully to the client). This would make it pointless to
ask the user for confirmation, since the URL the confirmation page would be
showing wouldn't be the client's.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Don't show the login forms if we're currently logging in with a
password or a token.
* Submit directly the SSO login form, showing only a spinner to the
user, in order to eliminate from the clunkiness of SSO through this
fallback.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
instead of `python3-virtualenv` (#6892)
* change debian package from python3-virtualenv to virtualenv
The virtualenv package is needed for the virtualenv command. The
virtualenv package depends on python3-virtualenv (at least since
debian jessie) so there is no need to specify python3-virtualenv
additionally.
Signed-off-by: Vieno Hakkerinen <vieno@hakkerinen.eu>
* Add changelog
Co-authored-by: Andrew Morgan <andrew@amorgan.xyz>
|
| | | |
|
| |/
|/|
| |
| | |
Fixes: #7127
Signed-off-by: David Vo <david@vovo.id.au>
|
|\ \
| | |
| | | |
Allow RedirectResponse in SAML response handler
|
| | |
| | |
| | | |
Co-Authored-By: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Allow custom SAML handlers to redirect after processing an auth response.
Fixes #7149
Signed-off-by: Jason Robinson <jasonr@matrix.org>
|
| | |
| | |
| | |
| | | |
(#7136)
|
| | |
| | |
| | |
| | | |
provided (#6573)
|
|/ / |
|
| | |
|
| |
| |
| | |
Signed-off-by: Aaron Raimist <aaron@raim.ist>
|
| |
| |
| | |
This changes the replication protocol so that the server does not send down `RDATA` for rows that happened before the client connected. Instead, the server will send a `POSITION` and clients then query the database (or master out of band) to get up to date.
|
| | |
|
|\ \
| | |
| | | |
Fix starting workers when federation sending not split out.
|
| | | |
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Pull Sentinel out of LoggingContext
... and drop a few unnecessary references to it
* Factor out LoggingContext.current_context
move `current_context` and `set_context` out to top-level functions.
Mostly this means that I can more easily trace what's actually referring to
LoggingContext, but I think it's generally neater.
* move copy-to-parent into `stop`
this really just makes `start` and `stop` more symetric. It also means that it
behaves correctly if you manually `set_log_context` rather than using the
context manager.
* Replace `LoggingContext.alive` with `finished`
Turn `alive` into `finished` and make it a bit better defined.
|
| |
| |
| | |
Build the same service URL when requesting the CAS ticket and when calling the proxyValidate URL.
|
| |
| |
| |
| | |
used. (#7109)
|
| |
| |
| | |
Signed-off-by: Kartikaya Gupta <kats@trevize.staktrace.com>
|
| |
| |
| |
| |
| | |
This just helps keep the rows closer to their streams, so that it's easier to
see what the format of each stream is.
|
| |
| |
| |
| |
| |
| | |
`groups` != `receipts`
Introduced in #6964
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Attempts to clarify the sample config for databases, and add some stuff about
tcp keepalives to `postgres.md`.
|
| | |
|
| | |
|
| |
| |
| |
| | |
PDU" errors (#7089).
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Add 'device_lists_outbound_pokes' as extra table.
This makes sure we check all the relevant tables to get the current max
stream ID.
Currently not doing so isn't problematic as the max stream ID in
`device_lists_outbound_pokes` is the same as in `device_lists_stream`,
however that will change.
* Change device lists stream to have one row per id.
This will make it possible to process the streams more incrementally,
avoiding having to process large chunks at once.
* Change device list replication to match new semantics.
Instead of sending down batches of user ID/host tuples, send down a row
per entity (user ID or host).
* Newsfile
* Remove handling of multiple rows per ID
* Fix worker handling
* Comments from review
|
| |\ \
| | | |
| | | |
| | | | |
erikj/fixup_devices_stream
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | | |
add a lock to try to make this metric actually work
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This should be safe to do on all workers/masters because it is guarded by
a config option which will ensure it is only actually done on the worker
assigned as a pusher.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It was originally implemented by pulling the full auth chain of all
state sets out of the database and doing set comparison. However, that
can take a lot work if the state and auth chains are large.
Instead, lets try and fetch the auth chains at the same time and
calculate the difference on the fly, allowing us to bail early if all
the auth chains converge. Assuming that the auth chains do converge more
often than not, this should improve performance. Hopefully.
|
| | | |
| | | |
| | | |
| | | | |
devices. (#7085)
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Extends #5794 etc to the SimpleHttpClient so that it also applies to non-federation requests.
Fixes #7092.
|
| | | |
| | | |
| | | |
| | | | |
Fixes #7043
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
(#7053)"
This reverts commit 54dd28621b070ca67de9f773fe9a89e1f4dc19da, reversing
changes made to 6640460d054e8f4444046a34bdf638921b31c01e.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Fixes #7065
This is basically the same as https://github.com/matrix-org/synapse/pull/6847 except it tries to populate events from `state_events` rather than `current_state_events`, since the latter might have been cleared from the state of some rooms too early, leaving them with a `NULL` room version.
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Move the default SAML2 error HTML to a dedicated file
|
| | | | | |
|
| | | | | |
|
|/ / / / |
|
|\ \ \ \ |
|
| | | | | |
|
| | |/ /
| |/| | |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
matrix-org/babolivier/get_time_of_last_push_action_before
Move get_time_of_last_push_action_before to the EventPushActionsWorkerStore
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
It's the same as in #6964 since it's the most likely cause of the bug
and that change hasn't been released yet.
|
| | | | |
| | | | |
| | | | |
| | | | | |
room ver. (#7037)
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Make sure that is_verified is a boolean when processing room keys
|
| |/ / / / |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* Add type hints to logging/context.py
Signed-off-by: neiljp (Neil Pilgrim) <github@kepier.clara.net>
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
* Break down monthly active users by appservice_id and emit via prometheus.
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is a bit fiddly because it all has to be done on one fell swoop:
* Wherever we create a new event, pass in the room version (and check it matches the format version)
* When we prune an event, use the room version of the unpruned event to create the pruned version.
* When we pass an event over the replication protocol, pass the room version over alongside it, and use it when deserialising the event again.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This is a precursor to giving EventBase objects the knowledge of which room version they belong to.
|
|\ \ \ \
| | |_|/
| |/| | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Fix #6910
|
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | | |
This currently causes presence notify code to log exceptions when there
is no state changes to process. This doesn't actually cause any problems
as we'd simply do nothing anyway.
|
| | |
| | |
| | |
| | |
| | | |
I'm not really sure how this was going wrong, but this seems like the
right approach anyway.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Support for getting TLS certificates through ACMEv1 ended on November 2019.
Signed-off-by: Uday Bansal <43824981+udaybansal19@users.noreply.github.com>
|
| |/
|/| |
|
| |
| |
| | |
Fix #6910
|
|\| |
|
| |
| |
| |
| | |
Properly convert a coroutine into a Deferred in federation_base to fix an error when joining a room.
|
| | |
|
| |
| |
| | |
Some small fixes to the copy in #6907.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Instead lets just warn if the worker has a media listener configured but
has the media repository disabled.
Previously non media repository workers would just ignore the media
listener.
|
| |
| |
| | |
to stop the federationhandler trying to do master stuff
|
| |
| |
| |
| |
| | |
Signed-off-by: James Hebden <james@ec0.io>
|
| |
| |
| |
| |
| | |
I cracked, and added some type definitions in synapse.storage.
|
| |
| |
| |
| |
| | |
When we get an invite over federation, store the room version in the rooms table.
The general idea here is that, when we pull the invite out again, we'll want to know what room_version it belongs to (so that we can later redact it if need be). So we need to store it somewhere...
|
| | |
|
| |
| |
| | |
Signed-off-by: Uday Bansal <43824981+udaybansal19@users.noreply.github.com>
|
| |
| |
| |
| | |
handling of call to deactivate user (#6990)
|
| |
| |
| |
| |
| |
| | |
Some of the database deltas rely on `config.server_name` being set correctly,
so we should check that it is before running the deltas.
Fixes #6870.
|
| | |
|
| |
| |
| |
| |
| | |
I made a mistake in https://github.com/matrix-org/synapse/pull/6921 - the quotes break the postgres container's startup script (or docker-compose), which makes initdb fail: https://github.com/matrix-org/synapse/pull/6921#issuecomment-590657154
Signed-off-by: Fridtjof Mund <fridtjof@das-labor.org>
|
| |
| |
| |
| |
| | |
`_process_received_pdu` is only called by `on_receive_pdu`, which ignores any
events for unknown rooms, so this is redundant.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This is intended as a precursor to storing room versions when we receive an
invite over federation, but has the happy side-effect of fixing #3374 at last.
In short: change the store_room with try/except to a proper upsert which
updates the right columns.
|
| |
| |
| |
| |
| |
| | |
* Give `notif_template_html`, `notif_template_text` default values (fixes #6960)
* Don't complain if `smtp_host` and `smtp_port` are unset, since they have sensible defaults (fixes #6961)
* Set the example for `enable_notifs` to `True`, for consistency and because it's more useful
* Raise errors as ConfigError rather than RuntimeError for nicer formatting
|
| |
| |
| |
| | |
notifications. (#6966)
|
| | |
|
| | |
|
| |
| |
| |
| | |
canonical aliases.
|
| |
| |
| |
| | |
Ensure good comprehension hygiene using flake8-comprehensions.
|
| | |
|
| |
| |
| | |
Stop emitting room alias update events during room creation/upgrade.
|
| | |
|
| |
| |
| | |
Signed-off-by: Ruben Barkow-Kuder <github@r.z11.de>
|
| | |
|
| |
| |
| |
| |
| | |
This may make gc go a bit faster as the gc will know things like
caches/data stores etc. are frozen without having to check.
|
|/
|
|
|
|
| |
The state res v2 algorithm only cares about the difference between auth
chains, so we can pass in the known common state to the `get_auth_chain`
storage function so that it can ignore those events.
|
| |
|
| |
|
|\
| |
| | |
Make room alias lists peekable
|
| | |
|
|\ \
| | |
| | | |
Clean up and update federation docs
|
| | | |
|
| | |
| | |
| | | |
it's not in the spec yet, so needs to be unstable. Also add a feature flag for it. Also add a test for admin users.
|
| | |
| | |
| | |
| | | |
we have hundreds of path_regexes (see #5118), so let's not convert the same
bytes to str for each of them.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Increase DB/CPU perf of `_is_server_still_joined` check.
For rooms with large amount of state a single user leaving could cause
us to go and load a lot of membership events and then pull out
membership state in a large number of batches.
* Newsfile
* Update synapse/storage/persist_events.py
Co-Authored-By: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fix adding if too soon
* Update docstring
* Review comments
* Woops typo
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
|
|\ \ \
| | | |
| | | | |
Fix log in message retention purge jobs
|
| | | |
| | | |
| | | | |
Co-Authored-By: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
|
| | | | |
|
| |_|/
|/| | |
|
| | |
| | |
| | |
| | |
| | | |
per matrix-org/matrix-doc#2432
|
|\ \ \
| | | |
| | | | |
Rewrite _EventInternalMetadata to back it with a dict
|
| | | | |
|
|\ \ \ \
| |_|/ /
|/| | | |
Add mention and warning about ACME v1 deprecation to the TLS config
|
| | | | |
|
| | | |
| | | |
| | | | |
We do this by moving the recursive query to be fully in the DB.
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Update INSTALL.md to recommend reverse proxying and warn about ACMEv1 deprecation
|
| | |_|/
| |/| | |
|
| | | |
| | | |
| | | | |
Stop sending events when creating or deleting associations (room aliases). Send an updated canonical alias event if one of the alt_aliases is deleted.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Lots of people seem to get confused by this mode, and it's been deprecated
since Synapse 1.1.0. It's time for it to go.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
delete_old_current_state_events (#6924)
|
| | | |
| | | |
| | | |
| | | | |
Add typing information to the spam checker modules.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
(#6921)
Signed-off-by: Fridtjof Mund <fridtjof@das-labor.org>
|
| | | |
| | | |
| | | | |
Fixes #6916.
|
| |_|/
|/| |
| | | |
Convert directory handler tests to use HomeserverTestCase.
|
|/ /
| |
| | |
Add a method to the spam checker to filter the user directory results.
|
| | |
|
| |
| |
| | |
Add documentation for the spam checker.
|
|\ \
| | |
| | | |
Update ACME.md to mention ACME v1 deprecation
|
| |/ |
|
|/
|
|
|
|
|
| |
(#6877)
Fixes #5528
|
|\
| |
| | |
Spell out that the last event sent to a room won't be deleted by a purge
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
| |
* Reject device display names that are too long.
Too long is currently defined as 100 characters in length.
* Add a regression test for rejecting a too long device display name.
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Synapse 1.10.0rc3 (2020-02-10)
==============================
Features
--------
- Filter out m.room.aliases from the CS API to mitigate abuse while a better solution is specced. ([\#6878](https://github.com/matrix-org/synapse/issues/6878))
Internal Changes
----------------
- Fix continuous integration failures with old versions of `pip`, which were introduced by a release of the `zipp` library. ([\#6880](https://github.com/matrix-org/synapse/issues/6880))
|
| | |
|
| |
| |
| |
| |
| | |
(#6878)
We're in the middle of properly mitigating spam caused by malicious aliases being added to a room. However, until this work fully lands, we temporarily filter out all m.room.aliases events from /sync and /messages on the CS API, to remove abusive aliases. This is considered acceptable as m.room.aliases events were never a reliable record of the given alias->id mapping and were purely informational, and in their current state do more harm than good.
|
|\| |
|
| |
| |
| | |
Workaround for jaraco/zipp#40
|
| | |
|
| |
| |
| | |
If they don't then the device lists are probably out of sync.
|
| |
| |
| | |
add device signatures to device key query results
|
| |
| |
| |
| |
| |
| |
| |
| | |
We were looking at the wrong event type (`m.room.encryption` vs
`m.room.encrypted`).
Also fixup the duplicate `EvenTypes` entries.
Introduced in #6776.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
... and use it in places where it's trivial to do so.
This will make it easier to pass room versions into the FrozenEvent
constructors.
|
| | |
|
| | |
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Pass room_version into `event_from_pdu_json`
|
| | |
| | |
| | |
| | | |
It's called from all over the shop, so this one's a bit messy.
|
|/ /
| |
| | |
Limit the maximum number of events requested when backfilling events.
|
| |
| |
| |
| | |
... which allows us to sanity-check the create event.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
A lot of the things we log at INFO are now a bit superfluous, so lets
make them DEBUG logs to reduce the amount we log by default.
Co-Authored-By: Brendan Abolivier <babolivier@matrix.org>
Co-authored-by: Brendan Abolivier <github@brendanabolivier.com>
|
|\ \
| | |
| | | |
pass room versions around
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Add quotes around the pip install target to avoid my shell complaining
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Port much of `synapse.federation.federation_client` to async/await
|
| |\ \ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
* Reduce tnx performance logging to DEBUG
* Changelog.d
|
| | | |
| | | |
| | | | |
We're going to need this so that we can figure out how to handle redactions when fetching events from the database.
|
|\ \ \ \
| | | | |
| | | | | |
add device signatures to device key query results
|
| | | | | |
|
| |_|/ /
|/| | | |
|
|\ \ \ \
| |/ / /
|/| / /
| |/ / |
Port much of `synapse.handlers.federation` to async/await.
|
| | | |
|
| | |
| | |
| | |
| | | |
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
|
|/ / |
|
| | |
|
|/
|
|
| |
I messed this up a bit in #6805, but fortunately we weren't actually doing
anything with the room_version so it didn't matter that it was a str not a RoomVersion.
|
| |
|
|
|
|
| |
We were in fact only deleting stale marker when we got an incremental
update, rather than when we did a full resync.
|
| |
|
|\
| |
| | |
Pass room_version into add_hashes_and_signatures
|
| | |
|
|\ \
| | |
| | | |
Make `get_room_version` return a RoomVersion object
|
| | | |
|
|/ / |
|
| | |
|
|/ |
|
|
|
|
|
| |
as per MSC2260
|
| |
|
| |
|
|
|
|
| |
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
|
|
|
|
|
|
|
|
|
| |
When a server leaves a room it may stop sharing a room with remote
users, and thus not get any updates to their device lists. So we need to
check for this case and delete those device lists from the cache.
We don't need to do this if we stop sharing a room because the remote
user leaves the room, because we track that case via looking at
membership changes.
|
|
|
|
|
|
| |
If we detect that the remote users' keys may have changed then we should
attempt to resync against the remote server rather than using the
(potentially) stale local cache.
|
|
|
|
|
|
|
|
|
|
| |
* Bump signedjson to 1.1
... so that we can use the type definitions
* Fix breakage caused by upgrade to signedjson 1.1
Thanks, @illicitonion...
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were sending device updates down both the federation stream and
device streams. This mean there was a race if the federation sender
worker processed the federation stream first, as when the sender checked
if there were new device updates the slaved ID generator hadn't been
updated with the new stream IDs and so returned nothing.
This situation is correctly handled by events/receipts/etc by not
sending updates down the federation stream and instead having the
federation sender worker listen on the other streams and poke the
transaction queues as appropriate.
|
|
|
|
|
|
| |
Otherwise its just stale data, which may get deleted later anyway so
can't be relied on. It's also a bit of a shotgun if we're trying to get
the current state of a room we're not in.
|
|
|
|
| |
We ended up only returning a single device, rather than all of them.
|
| |
|