summary refs log tree commit diff
path: root/synapse/handlers/message.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Replace iteritems/itervalues/iterkeys with native versions. (#7692)Patrick Cloke2020-06-151-4/+4
|
* Performance improvements and refactor of Ratelimiter (#7595)Andrew Morgan2020-06-051-1/+0
| | | | | | | | | | While working on https://github.com/matrix-org/synapse/issues/5665 I found myself digging into the `Ratelimiter` class and seeing that it was both: * Rather undocumented, and * causing a *lot* of config checks This PR attempts to refactor and comment the `Ratelimiter` class, as well as encourage config file accesses to only be done at instantiation. Best to be reviewed commit-by-commit.
* Optimise some references to hs.config (#7546)Richard van der Hoff2020-05-221-3/+5
| | | These are surprisingly expensive, and we only really need to do them at startup.
* Add option to move event persistence off master (#7517)Erik Johnston2020-05-221-5/+7
|
* Add ability to wait for replication streams (#7542)Erik Johnston2020-05-221-11/+25
| | | | | | | The idea here is that if an instance persists an event via the replication HTTP API it can return before we receive that event over replication, which can lead to races where code assumes that persisting an event immediately updates various caches (e.g. current state of the room). Most of Synapse doesn't hit such races, so we don't do the waiting automagically, instead we do so where necessary to avoid unnecessary delays. We may decide to change our minds here if it turns out there are a lot of subtle races going on. People probably want to look at this commit by commit.
* Omit displayname or avatar_url if they aren't set instead of returning null ↵Aaron Raimist2020-05-191-2/+6
| | | | | | | | | (#7497) Per https://github.com/matrix-org/matrix-doc/issues/1436#issuecomment-410089470 they should be omitted instead of returning null or "". They aren't marked as required in the spec. Fixes https://github.com/matrix-org/synapse/issues/7333 Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Allow censoring of events to happen on workers. (#7492)Erik Johnston2020-05-131-2/+0
| | | This is safe as we can now write to cache invalidation stream on workers, and is required for when we move event persistence off master.
* Add a configuration setting for the dummy event threshold (#7422)Brendan Abolivier2020-05-071-1/+3
| | | Add dummy_events_threshold which allows configuring the number of forward extremities a room needs for Synapse to send forward extremities in it.
* async/await is_server_admin (#7363)Andrew Morgan2020-05-011-44/+39
|
* Use the proper error code when a canonical alias that does not exist is ↵Patrick Cloke2020-03-231-19/+38
| | | | used. (#7109)
* Don't filter out dummy events when we're checking the visibility of stateBrendan Abolivier2020-03-111-1/+1
|
* Validate the alt_aliases property of canonical alias events (#6971)Patrick Cloke2020-03-031-3/+44
|
* Port PresenceHandler to async/await (#6991)Erik Johnston2020-02-261-3/+2
|
* Add `allow_departed_users` param to `check_in_room_or_world_readable`Richard van der Hoff2020-02-191-4/+8
| | | | | | | ... and set it everywhere it's called. while we're here, rename it for consistency with `check_user_in_room` (and to help check that I haven't missed any instances)
* make FederationHandler.send_invite asyncRichard van der Hoff2020-02-031-3/+2
|
* s/get_room_version/get_room_version_id/Richard van der Hoff2020-01-311-3/+5
| | | | | ... to make way for a forthcoming get_room_version which returns a RoomVersion object.
* Pass room version object into event_auth.check and check_redaction (#6788)Richard van der Hoff2020-01-281-2/+6
| | | | | | | These are easier to work with than the strings and we normally have one around. This fixes `FederationHander._persist_auth_tree` which was passing a RoomVersion object into event_auth.check instead of a string.
* Remove unused hashes and depths from create_event paramsRichard van der Hoff2020-01-061-16/+5
|
* Remove unused hashes and depths from create_new_client_event paramsRichard van der Hoff2020-01-061-12/+14
|
* replace get_prev_events_and_hashes_for_room with get_prev_events_for_room in ↵Richard van der Hoff2020-01-061-9/+3
| | | | create_new_client_event
* rename get_prev_events_for_room to get_prev_events_and_hashes_for_roomRichard van der Hoff2020-01-061-2/+4
| | | | ... to make way for a new method which just returns the event ids
* Change EventContext to use the Storage class (#6564)Erik Johnston2019-12-201-5/+5
|
* Prevent redacted events from appearing in message search (#6377)Andrew Morgan2019-12-111-2/+3
|
* Pull out room_invite_state_types config option once.Erik Johnston2019-12-091-1/+3
| | | | Pulling things out of config is currently surprisingly expensive.
* Add ephemeral messages support (MSC2228) (#6409)Brendan Abolivier2019-12-031-1/+122
| | | | | | | | Implement part [MSC2228](https://github.com/matrix-org/matrix-doc/pull/2228). The parts that differ are: * the feature is hidden behind a configuration flag (`enable_ephemeral_messages`) * self-destruction doesn't happen for state events * only implement support for the `m.self_destruct_after` field (not the `m.self_destruct` one) * doesn't send synthetic redactions to clients because for this specific case we consider the clients to be able to destroy an event themselves, instead we just censor it (by pruning its JSON) in the database
* Discard retention policies when retrieving stateBrendan Abolivier2019-11-281-1/+1
| | | | | | | | Purge jobs don't delete the latest event in a room in order to keep the forward extremity and not break the room. On the other hand, get_state_events, when given an at_token argument calls filter_events_for_client to know if the user can see the event that matches that (sync) token. That function uses the retention policies of the events it's given to filter out those that are too old from a client's view. Some clients, such as Riot, when loading a room, request the list of members for the latest sync token it knows about, and get confused to the point of refusing to send any message if the server tells it that it can't get that information. This can happen very easily with the message retention feature turned on and a room with low activity so that the last event sent becomes too old according to the room's retention policy. An easy and clean fix for that issue is to discard the room's retention policies when retrieving state.
* Implement per-room message retention policiesBrendan Abolivier2019-11-041-2/+2
|
* Update black to 19.10b0 (#6304)Amber Brown2019-11-011-6/+8
| | | * update version of black and also fix the mypy config being overridden
* Merge pull request #6294 from matrix-org/erikj/add_state_storageErik Johnston2019-10-311-4/+6
|\ | | | | Add StateGroupStorage interface
| * Port to use state storageErik Johnston2019-10-301-4/+6
| |
* | Remove usage of deprecated logger.warn method from codebase (#6271)Andrew Morgan2019-10-311-1/+1
|/ | | Replace every instance of `logger.warn` with `logger.warning` as the former is deprecated.
* Use new EventPersistenceStoreErik Johnston2019-10-231-1/+2
|
* Fix dummy event insertion consent bug (#6053)Neil Johnson2019-09-261-27/+72
| | | Fixes #5905
* Fix commentsErik Johnston2019-09-111-1/+1
| | | Co-Authored-By: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix how we check for self redactionErik Johnston2019-09-111-4/+18
|
* Allow use of different ratelimits for admin redactions.Erik Johnston2019-09-111-1/+7
| | | | | This is useful to allow room admins to quickly deal with a large number of abusive messages.
* Apply suggestions from code reviewWill Hunt2019-08-231-2/+2
| | | Co-Authored-By: Erik Johnston <erik@matrix.org>
* Exempt bot usersHalf-Shot2019-08-231-1/+1
|
* Return user_type in get_user_by_idHalf-Shot2019-08-231-1/+4
|
* Deny redaction of events in a different room.Erik Johnston2019-07-311-1/+3
| | | | | We already correctly filter out such redactions, but we should also deny them over the CS API.
* Stop trying to fetch events with event_id=None. (#5753)Richard van der Hoff2019-07-241-1/+7
| | | | | | | `None` is not a valid event id, so queuing up a database fetch for it seems like a silly thing to do. I considered making `get_event` return `None` if `event_id is None`, but then its interaction with `allow_none` seemed uninituitive, and strong typing ftw.
* Replace returnValue with return (#5736)Amber Brown2019-07-231-17/+15
|
* Ignore redactions of m.room.create events (#5701)Richard van der Hoff2019-07-171-9/+24
|
* Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-041-1/+1
|
* Run Black. (#5482)Amber Brown2019-06-201-158/+100
|
* Run as background process and fix commentsErik Johnston2019-06-191-2/+5
|
* Add experimental option to reduce extremities.Erik Johnston2019-06-181-1/+71
| | | | | | | Adds new config option `cleanup_extremities_with_dummy_events` which periodically sends dummy events to rooms with more than 10 extremities. THIS IS REALLY EXPERIMENTAL.
* Add plugin APIs for implementations of custom event rules.Brendan Abolivier2019-06-141-2/+12
|
* Merge pull request #5220 from matrix-org/erikj/dont_bundle_live_eventsErik Johnston2019-05-241-0/+3
|\ | | | | Don't bundle aggregations with events in /sync or /events or state queries
| * Don't bundle aggs for /state and /members etc APIsErik Johnston2019-05-241-0/+3
| |
* | Fix wordsErik Johnston2019-05-211-3/+3
| |
* | Block attempts to annotate the same event twiceErik Johnston2019-05-201-1/+15
|/
* Allow client event serialization to be asyncErik Johnston2019-05-141-3/+4
|
* Do checks on aliases for incoming m.room.aliases events (#5128)Brendan Abolivier2019-05-081-0/+30
| | | | | Follow-up to #5124 Also added a bunch of checks to make sure everything (both the stuff added on #5124 and this PR) works as intended.
* Fix grammar and document get_current_users_in_room (#4998)Andrew Morgan2019-04-031-1/+1
|
* Collect room-version variations into one place (#4969)Richard van der Hoff2019-04-011-2/+5
| | | | Collect all the things that make room-versions different to one another into one place, so that it's easier to define new room versions.
* Revert spurious deleteErik Johnston2019-03-201-0/+4
|
* Use flagsErik Johnston2019-03-201-13/+5
|
* Move requester check into assert_accepted_privacy_policyErik Johnston2019-03-201-5/+8
|
* Only require consent for events with an associated requestErik Johnston2019-03-201-1/+5
| | | | | | | | | There are a number of instances where a server or admin may puppet a user to join/leave rooms, which we don't want to fail if the user has not consented to the privacy policy. We fix this by adding a check to test if the requester has an associated access_token, which is used as a proxy to answer the question of whether the action is being done on behalf of a real request from the user.
* fix test_auto_create_auto_join_where_no_consent (#4886)Neil Johnson2019-03-191-3/+10
|
* Fix incorrect log about not persisting duplicate state event. (#4776)Richard van der Hoff2019-03-011-3/+4
| | | We were logging this when it was not true.
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2019-01-291-28/+6
|\ | | | | | | erikj/redactions_eiah
| * Correctly set context.app_serviceErik Johnston2019-01-291-0/+2
| |
| * Refactor event building into EventBuilderErik Johnston2019-01-291-29/+5
| | | | | | | | | | This is so that everything is done in one place, making it easier to change the event format based on room version
* | Implement rechecking of redactionsErik Johnston2019-01-291-1/+5
|/
* Merge pull request #4494 from matrix-org/erikj/fixup_event_validatorErik Johnston2019-01-291-1/+3
|\ | | | | Split up event validation between event and builder
| * Split up event validation between event and builderErik Johnston2019-01-281-1/+3
| | | | | | | | | | | | | | | | | | The validator was being run on the EventBuilder objects, and so the validator only checked a subset of fields. With the upcoming EventBuilder refactor even fewer fields will be there to validate. To get around this we split the validation into those that can be run against an EventBuilder and those run against a fully fledged event.
* | Correctly use default room version if none is setErik Johnston2019-01-281-2/+2
| |
* | Pass through room version to event authErik Johnston2019-01-251-1/+6
|/
* Require event format version to parse or create eventsErik Johnston2019-01-251-1/+9
|
* Revert "Require event format version to parse or create events"Erik Johnston2019-01-251-9/+1
|
* Require event format version to parse or create eventsErik Johnston2019-01-231-1/+9
|
* Log some bits about event creation (#4121)Richard van der Hoff2018-10-311-0/+3
| | | | I found these helpful in debugging my room upgrade tests.
* Refactor state group lookup to reduce DB hits (#4011)Erik Johnston2018-10-251-12/+8
| | | | | | | | Currently when fetching state groups from the data store we make two hits two the database: once for members and once for non-members (unless request is filtered to one or the other). This adds needless load to the datbase, so this PR refactors the lookup to make only a single database hit.
* Remove redundant run_as_background_process() from pusherpoolRichard van der Hoff2018-10-221-1/+1
| | | | | | | `on_new_notifications` and `on_new_receipts` in `HttpPusher` and `EmailPusher` now always return synchronously, so we can remove the `defer.gatherResults` on their results, and the `run_as_background_process` wrappers can be removed too because the PusherPool methods will now complete quickly enough.
* Avoid reraise, to improve stacktracesRichard van der Hoff2018-10-011-12/+13
|
* Merge pull request #3710 from matrix-org/rav/logcontext_for_pusher_updatesRichard van der Hoff2018-08-171-5/+2
|\ | | | | Fix logcontexts for running pushers
| * Fix logcontexts for running pushersRichard van der Hoff2018-08-171-5/+2
| | | | | | | | | | | | | | First of all, avoid resetting the logcontext before running the pushers, to fix the "Starting db txn 'get_all_updated_receipts' from sentinel context" warning. Instead, give them their own "background process" logcontexts.
* | block event creation and room creation on hitting resource limitsNeil Johnson2018-08-161-1/+5
|/
* speed up /members and add at= and membership params (#3568)Matthew Hodgson2018-08-151-12/+76
|
* Rename async to async_helpers because `async` is a keyword on Python 3.7 (#3678)Amber Brown2018-08-101-1/+1
|
* Use new helper base class for ReplicationSendEventRestServletErik Johnston2018-07-311-7/+4
|
* Merge branch 'develop' into erikj/client_apis_moveErik Johnston2018-07-241-12/+19
|\
| * Fix missing attributes on workers.Erik Johnston2018-07-231-2/+3
| | | | | | | | | | This was missed during the transition from attribute to getter for getting state from context.
| * Use new gettersErik Johnston2018-07-231-10/+16
| |
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-07-231-2/+2
|\| | | | | | | erikj/client_apis_move
| * Combine Limiter and LinearizerRichard van der Hoff2018-07-201-2/+2
| | | | | | | | | | Linearizer was effectively a Limiter with max_count=1, so rather than maintaining two sets of code, let's combine them.
| * Improvements to the LimiterRichard van der Hoff2018-07-201-1/+1
| | | | | | | | | | * give them names, to improve logging * use a deque rather than a list for efficiency
* | Move PaginationHandler to its own fileErik Johnston2018-07-201-240/+2
| |
* | Move check_in_room_or_world_readable to AuthErik Johnston2018-07-201-34/+6
| |
* | Split MessageHandler into read only and writersErik Johnston2018-07-181-131/+150
|/ | | | | This will let us call the read only parts from workers, and so be able to move some APIs off of master, e.g. the `/state` API.
* s/becuase/because/gMatthew Hodgson2018-07-101-1/+1
|
* run isortAmber Brown2018-07-091-13/+10
|
* Attempt to be more performant on PyPy (#3462)Amber Brown2018-06-281-3/+2
|
* allow non-consented users to still part rooms (to let us autopart them)Matthew Hodgson2018-06-251-2/+6
|
* Remove all global reactor imports & pass it around explicitly (#3424)Amber Brown2018-06-251-2/+2
|
* Pass around the reactor explicitly (#3385)Amber Brown2018-06-221-0/+1
|
* Remove run_on_reactor (#3395)Amber Brown2018-06-141-3/+1
|
* Exempt AS-registered users from doing gdprRichard van der Hoff2018-05-291-0/+3
|
* Misc. py3 fixesAdrian Tschira2018-05-241-4/+5
| | | | Signed-off-by: Adrian Tschira <nota@notafile.com>
* Merge branch 'release-v0.30.0' into rav/localpart_in_consent_uriRichard van der Hoff2018-05-231-1/+4
|\
| * Support for putting %(consent_uri)s in messagesRichard van der Hoff2018-05-231-1/+4
| | | | | | | | | | Make it possible to put the URI in the error message and the server notice that get sent by the server
* | Use the localpart in the consent uriRichard van der Hoff2018-05-231-1/+3
|/ | | | ... because it's shorter.
* Reject attempts to send event before privacy consent is givenRichard van der Hoff2018-05-221-1/+85
| | | | | | Returns an M_CONSENT_NOT_GIVEN error (cf https://github.com/matrix-org/matrix-doc/issues/1252) if consent is not yet given.
* Make purge_history operate on tokensErik Johnston2018-05-151-6/+6
| | | | As we're soon going to change how topological_ordering works
* Merge branch 'release-v0.28.1' into developRichard van der Hoff2018-05-011-1/+5
|\
| * Apply some limits to depth to counter abuseRichard van der Hoff2018-05-011-1/+5
| | | | | | | | | | | | | | * When creating a new event, cap its depth to 2^63 - 1 * When receiving events, reject any without a sensible depth As per https://docs.google.com/document/d/1I3fi2S-XnpO45qrpCsowZv8P8dHcNZ4fsBsbOW7KABI
* | pep8; remove spurious importRichard van der Hoff2018-04-271-1/+1
| |
* | Merge remote-tracking branch 'origin/develop' into rav/use_run_in_backgroundRichard van der Hoff2018-04-271-13/+30
|\ \
| * \ Merge pull request #3142 from matrix-org/rav/reraiseRichard van der Hoff2018-04-271-7/+14
| |\ \ | | | | | | | | reraise exceptions more carefully
| | * | reraise exceptions more carefullyRichard van der Hoff2018-04-271-7/+14
| | |/ | | | | | | | | | | | | | | | | | | We need to be careful (under python 2, at least) that when we reraise an exception after doing some error handling, we actually reraise the original exception rather than anything that might have been raised (and handled) during the error handling.
| * / Improve exception handling for background processesRichard van der Hoff2018-04-271-6/+16
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were a bunch of places where we fire off a process to happen in the background, but don't have any exception handling on it - instead relying on the unhandled error being logged when the relevent deferred gets garbage-collected. This is unsatisfactory for a number of reasons: - logging on garbage collection is best-effort and may happen some time after the error, if at all - it can be hard to figure out where the error actually happened. - it is logged as a scary CRITICAL error which (a) I always forget to grep for and (b) it's not really CRITICAL if a background process we don't care about fails. So this is an attempt to add exception handling to everything we fire off into the background.
* / Use run_in_background in preference to preserve_fnRichard van der Hoff2018-04-271-2/+3
|/ | | | | | While I was going through uses of preserve_fn for other PRs, I converted places which only use the wrapped function once to use run_in_background, to avoid creating the function object.
* Avoid creating events with huge numbers of prev_eventsRichard van der Hoff2018-04-161-34/+44
| | | | | | In most cases, we limit the number of prev_events for a given event to 10 events. This fixes a particular code path which created events with huge numbers of prev_events.
* Note why we're limiting concurrent event sendsErik Johnston2018-04-101-0/+5
|
* Limit concurrent event sends for a roomErik Johnston2018-04-091-49/+50
|
* Use static JSONEncodersRichard van der Hoff2018-03-291-2/+2
| | | | | using json.dumps with custom options requires us to create a new JSONEncoder on each call. It's more efficient to create one upfront and reuse it.
* Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2018-03-191-3/+3
|\
| * Replace ujson with simplejsonErik Johnston2018-03-151-3/+3
| |
* | extra_users is actually a list of UserIDsErik Johnston2018-03-131-1/+1
| |
* | Add transactional API to history purgeRichard van der Hoff2018-03-121-5/+99
| | | | | | | | Make the purge request return quickly, and allow scripts to poll for updates.
* | Return an error when doing two purges on a roomRichard van der Hoff2018-03-121-3/+14
| | | | | | | | Queuing up purges doesn't sound like a good thing.
* | Provide a means to pass a timestamp to purge_historyRichard van der Hoff2018-03-051-9/+5
| |
* | Check event auth on the workerErik Johnston2018-03-011-16/+16
| |
* | Correctly send ratelimit and extra_users paramsErik Johnston2018-03-011-0/+2
| |
* | Fixup commentsErik Johnston2018-03-011-4/+4
| |
* | Calculate push actions on workerErik Johnston2018-02-281-25/+61
| |
* | Ensure that we delete staging push actions on errorsErik Johnston2018-02-151-3/+9
| |
* | Merge pull request #2854 from matrix-org/erikj/event_create_workerErik Johnston2018-02-131-6/+22
|\ \ | | | | | | Create a worker for event creation
| * | Move presence handling into handle_new_client_eventErik Johnston2018-02-071-6/+6
| | | | | | | | | | | | As we want to have it run on the main synapse instance
| * | Add replication http endpoint for event sendingErik Johnston2018-02-071-0/+16
| | |
* | | Merge pull request #2858 from matrix-org/rav/purge_updatesRichard van der Hoff2018-02-091-2/+2
|\ \ \ | |/ / |/| | delete_local_events for purge_room_history
| * | delete_local_events for purge_historyRichard van der Hoff2018-02-091-2/+2
| | | | | | | | | | | | Add a flag which makes the purger delete local events
| * | rename delete_old_state -> purge_historyRichard van der Hoff2018-02-091-1/+1
| |/ | | | | | | (beacause it deletes more than state)
* | Remove pointless ratelimit checkErik Johnston2018-02-071-5/+0
| | | | | | | | | | | | The intention was for the check to be called as early as possible in the request, but actually was called just before the main ratelimit check, so was fairly pointless.
* | Update copyrightErik Johnston2018-02-061-1/+1
| |
* | s/_create_new_client_event/create_new_client_event/Erik Johnston2018-02-061-3/+3
| |
* | Split event creation into a separate handlerErik Johnston2018-02-051-146/+160
|/
* replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-1/+1
| | | | what could possibly go wrong
* fix isinstanceDavid Baker2017-10-111-1/+1
|
* Allow error strings from spam checkerDavid Baker2017-10-111-2/+6
|
* Merge pull request #2466 from matrix-org/erikj/groups_mergedErik Johnston2017-10-111-1/+2
|\ | | | | Initial Group Implementation
| * Merge branch 'develop' into erikj/groups_mergedDavid Baker2017-10-021-1/+53
| |\
| * | Split out profile handler to fix testsErik Johnston2017-08-251-1/+2
| | |
* | | Merge pull request #2483 from jeremycline/unfreeze-ujson-dumpErik Johnston2017-10-111-1/+2
|\ \ \ | |_|/ |/| | Unfreeze event before serializing with ujson
| * | Unfreeze event before serializing with ujsonJeremy Cline2017-09-301-1/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In newer versions of https://github.com/esnme/ultrajson, ujson does not serialize frozendicts (introduced in esnme/ultrajson@53f85b1). Although the PyPI version is still 1.35, Fedora ships with a build from commit esnme/ultrajson@2f1d487. This causes the serialization to fail if the distribution-provided package is used. This runs the event through the unfreeze utility before serializing it. Thanks to @ignatenkobrain for tracking down the root cause. fixes #2351 Signed-off-by: Jeremy Cline <jeremy@jcline.org>
* | Fix /joined_members to work with AS usersErik Johnston2017-09-281-11/+25
| |
* | Fix bug where /joined_members didn't check user was in roomErik Johnston2017-09-271-0/+31
| |
* | Make the spam checker a moduleDavid Baker2017-09-261-2/+3
| |
* | PoC for filtering spammy events (#2456)Richard van der Hoff2017-09-191-1/+7
|/ | | Demonstration of how you might add some hooks to filter out spammy events.
* Fix bug where pusherpool didn't start and broke some roomsErik Johnston2017-07-061-1/+3
| | | | | | | | Since we didn't instansiate the PusherPool at start time it could fail at run time, which it did for some users. This may or may not fix things for those users, but it should happen at start time and stop the server from starting.
* Remove unused variablesErik Johnston2017-06-261-1/+1
|
* Reject local events that don't round trip the DBErik Johnston2017-06-191-0/+9
|
* Store ActionGenerator in HomeServerErik Johnston2017-05-191-2/+1
|
* Faster push rule calculation via push specific cacheErik Johnston2017-05-171-2/+3
| | | | | We add a push rule specific cache that ensures that we can reuse calculated push rules appropriately when a user join/leaves.
* Add per user ratelimiting overridesErik Johnston2017-05-101-13/+3
|
* Add more granular event send metricsErik Johnston2017-05-021-2/+8
|
* Fix invite state to always include all eventsErik Johnston2017-04-261-6/+3
|
* Remove spurious yieldRichard van der Hoff2017-04-031-1/+1
| | | | | In `MessageHandler`, remove `yield` on call to `Notifier.on_new_room_event`: it doesn't return anything anyway.
* Don't clobber a displayname or avatar_url if provided by an m.room.member eventPaul "LeoNerd" Evans2017-01-241-2/+4
|
* CommentErik Johnston2017-01-101-0/+2
|
* Don't block messages sending on bumping presenceErik Johnston2017-01-101-1/+1
|
* Merge pull request #1620 from matrix-org/erikj/concurrent_room_accessErik Johnston2016-12-121-27/+33
|\ | | | | Limit the number of events that can be created on a given room concurrently
| * CommentsErik Johnston2016-11-111-0/+2
| |
| * Limit the number of events that can be created on a given room concurretnlyErik Johnston2016-11-101-27/+31
| |
* | Handle sending events and device messages over federationErik Johnston2016-11-171-12/+1
|/
* Sample correctlyErik Johnston2016-11-081-1/+3
|
* Limit the number of prev_events of new eventsErik Johnston2016-11-081-0/+13
|
* Fix incredubly slow back pagination queryErik Johnston2016-10-241-2/+2
| | | | | | | If a client didn't specify a from token when paginating backwards synapse would attempt to query the (global) maximum topological token. This a) doesn't make much sense since they're room specific and b) there are no indices that lets postgres do this efficiently.
* CommentErik Johnston2016-10-191-0/+3
|
* Check whether to ratelimit sooner to avoid workErik Johnston2016-10-191-1/+13
|
* Support /initialSync in synchrotron workerErik Johnston2016-09-211-378/+3
|
* Use get_joined_users_from_context instead of manually looking up hostsErik Johnston2016-09-051-38/+6
|
* Correctly handle the difference between prev and current stateErik Johnston2016-08-311-5/+5
|
* Replace context.current_state with context.current_state_idsErik Johnston2016-08-251-22/+69
|
* Preserve some logcontextsErik Johnston2016-08-241-15/+20
|
* Add filter param to /messages APIErik Johnston2016-07-141-4/+12
|
* Add ReadWriteLock for pagination and history pruneErik Johnston2016-07-051-34/+36
|
* Add purge_history APIErik Johnston2016-07-051-0/+13
|
* Poke notifier on next reactor tickErik Johnston2016-06-031-4/+7
|
* Merge pull request #787 from matrix-org/markjh/liberate_presence_handlerMark Haines2016-05-171-2/+2
|\ | | | | Move the presence handler out of the Handlers object
| * Move the presence handler out of the Handlers objectMark Haines2016-05-161-2/+2
| |
* | Spell "domain" correctlyMark Haines2016-05-161-2/+2
|/ | | | s/domian/domain/g
* move filter_events_for_client out of base handlerMark Haines2016-05-111-8/+10
|
* Shuffle when we get the signing_key attribute.Mark Haines2016-05-111-2/+2
| | | | | | | | Wait until we sign a message to get the signing key from the homeserver config. This means that the message handler can be created without having a signing key in the config which means that separate processes like the pusher that don't send messages and don't need to sign them can still access the handlers.
* Move _create_new_client_event and handle_new_client_event out of base handlerMark Haines2016-05-111-2/+197
|
* Run filter_events_for_clientDavid Baker2016-04-271-4/+4
| | | | so we don't accidentally mail out events people shouldn't see
* Remove some unused functions (#711)Mark Haines2016-04-081-29/+0
| | | | | | | | * Remove some unused functions * get_room_events_stream is only used in tests * is_exclusive_room might actually be something we want
* Call profile handler get_displayname directly rather than using ↵Mark Haines2016-04-071-9/+1
| | | | collect_presencelike_data
* Use computed prev event idsErik Johnston2016-04-011-1/+5
|
* Add concurrently_execute functionErik Johnston2016-04-011-8/+2
|
* Merge pull request #618 from matrix-org/markjh/pushrule_streamMark Haines2016-03-041-2/+2
|\ | | | | Add a stream for push rule updates
| * Merge branch 'develop' into markjh/pushrule_streamMark Haines2016-03-041-3/+5
| |\
| * | Hook up the push rules to the notifierMark Haines2016-03-031-2/+2
| | |
* | | SpellingErik Johnston2016-03-041-1/+1
| | |
* | | Add profile information to invitesErik Johnston2016-03-041-2/+15
| |/ |/|
* | Pass whole requester to ratelimitingDaniel Wagner-Hall2016-03-031-3/+5
|/ | | | This will enable more detailed decisions
* Merge pull request #582 from matrix-org/erikj/presenceErik Johnston2016-02-191-11/+3
|\ | | | | Rewrite presence for performance.
| * Initial cutErik Johnston2016-02-171-11/+3
| |
* | Review commentsDaniel Wagner-Hall2016-02-181-1/+1
| |
* | Some cleanupDaniel Wagner-Hall2016-02-161-4/+10
| |
* | Branch off member and non member sendsDaniel Wagner-Hall2016-02-151-32/+34
| | | | | | | | Unclean, needs tidy-up, but works
* | Merge implementation of /join by alias or IDDaniel Wagner-Hall2016-02-151-7/+13
|/ | | | | This code is kind of rough (passing the remote servers down a long chain), but is a step towards improvement.
* Allow paginating backwards from stream tokenErik Johnston2016-01-281-6/+9
|
* Make it possible to paginate forwards from stream tokensRichard van der Hoff2016-01-271-22/+21
| | | | | In order that we can fill the gap after a /sync, make it possible to paginate forwards from a stream token.
* Allow non-guests to peek on rooms using /eventsDaniel Wagner-Hall2016-01-201-47/+46
|
* Require unbanning before other membership changesDaniel Wagner-Hall2016-01-151-12/+45
|
* Skip, rather than erroring, invalid guest requestsDaniel Wagner-Hall2016-01-051-2/+2
| | | | | | | | | | Erroring causes problems when people make illegal requests, because they don't know what limit parameter they should pass. This is definitely buggy. It leaks message counts for rooms people don't have permission to see, via tokens. But apparently we already consciously decided to allow that as a team, so this preserves that behaviour.
* Move the doc string to the public facing methodMark Haines2015-12-221-16/+17
|
* Add a cache for initialSync responses that expires after 5 minutesMark Haines2015-12-221-1/+23
|
* Make state updates in the C+S API idempotentMark Haines2015-12-021-0/+12
|
* Fix typo in collect_presencelike_dataMark Haines2015-12-021-1/+1
|
* Wrap calls to distributor.fire in appropriately named functions so that ↵Mark Haines2015-12-011-4/+6
| | | | static analysis can work out want is calling what
* Add API for setting account_data globaly or on a per room basisMark Haines2015-12-011-6/+34
|
* Merge pull request #375 from matrix-org/daniel/guestroominitialsyncDaniel Wagner-Hall2015-11-231-10/+15
|\ | | | | Clean up room initialSync for guest users
| * Clean up room initialSync for guest usersDaniel Wagner-Hall2015-11-131-10/+15
| |
* | s/private_user_data/account_data/Mark Haines2015-11-181-6/+6
|/
* Merge pull request #367 from matrix-org/daniel/readafterleaveDaniel Wagner-Hall2015-11-121-10/+11
|\ | | | | | | | | Merge pull request #367 from matrix-org/daniel/readafterleave Tweak guest access permissions
| * Tweak guest access permissionsDaniel Wagner-Hall2015-11-121-10/+11
| | | | | | | | | | | | * Allow world_readable rooms to be read by guests who have joined and left * Allow regular users to access world_readable rooms
* | Merge pull request #360 from matrix-org/daniel/guestroominitialsyncDaniel Wagner-Hall2015-11-121-23/+32
|\ \ | |/ |/| | | | | Merge pull request #360 from matrix-org/daniel/guestroominitialsync Allow guest access to room initialSync
| * Allow guest access to room initialSyncDaniel Wagner-Hall2015-11-111-23/+32
| |
* | Consider joined guest users as joined usersDaniel Wagner-Hall2015-11-121-12/+21
|/ | | | | Otherwise they're inconveniently allowed to write events to the room but not to read them from the room.
* Allow guest users to join and message roomsDaniel Wagner-Hall2015-11-101-2/+2
|
* Open up /events to anonymous users for room events onlyDaniel Wagner-Hall2015-11-051-13/+34
| | | | Squash-merge of PR #345 from daniel/anonymousevents
* Allow guests to register and call /events?room_id=Daniel Wagner-Hall2015-11-041-21/+25
| | | | | | | This follows the same flows-based flow as regular registration, but as the only implemented flow has no requirements, it auto-succeeds. In the future, other flows (e.g. captcha) may be required, so clients should treat this like the regular registration flow choices.
* Store room tag content and return the content in the m.tag eventMark Haines2015-11-021-4/+2
|
* Include tags in v1 room initial syncMark Haines2015-10-301-0/+11
|
* Include room tags v1 /initialSyncMark Haines2015-10-301-0/+12
|
* Amalgamate _filter_events_for_clientErik Johnston2015-10-161-50/+4
|
* Remove unused room_id argErik Johnston2015-10-141-5/+5
|
* Add a flag to initial sync to indicate we want rooms that the user has leftMark Haines2015-10-081-5/+8
|
* Merge branch 'develop' of github.com:matrix-org/synapse into erikj/invite_stateErik Johnston2015-09-251-48/+158
|\
| * Clarify that room_initial_sync returns a python dictMark Haines2015-09-211-1/+1
| |
| * Fix doc string to point at the right classMark Haines2015-09-211-2/+3
| |
| * Add explicit "elif event.membership == Membership.LEAVE" for clarityMark Haines2015-09-211-1/+2
| |
| * Clamp the "to" token for /rooms/{roomId}/messages to when the user leftMark Haines2015-09-211-0/+4
| | | | | | | | | | | | | | | | the room. There isn't a way for the client to learn a valid "to" token for a room that they have left in the C-S API but that doesn't stop a client making one up.
| * Allow users to GET individual state events for rooms that they have leftMark Haines2015-09-101-7/+13
| |
| * Allow users that have left a room to get the messages that happend in the ↵Mark Haines2015-09-091-4/+27
| | | | | | | | room before they left
| * Remove undocumented and unimplemented 'feedback' parameter from the ↵Mark Haines2015-09-091-18/+3
| | | | | | | | Client-Server API
| * Allow rooms/{roomId}/state for a room that has been leftMark Haines2015-09-091-5/+13
| |
| * Allow room initialSync for users that have left the room, returning a ↵Mark Haines2015-09-091-9/+76
| | | | | | | | snapshot of how the room was when they left it
| * Include rooms that a user has left in an initialSync. Include the state and ↵Mark Haines2015-09-081-6/+21
| | | | | | | | messages at the point they left the room
* | Bundle in some room state in the unsigned bit of the invite when sending to ↵Erik Johnston2015-09-101-0/+4
|/ | | | invited servers
* Remove completely unused concepts from codebaseDaniel Wagner-Hall2015-08-251-6/+3
| | | | | | | | | | Removes device_id and ClientInfo device_id is never actually written, and the matrix.org DB has no non-null entries for it. Right now, it's just cluttering up code. This doesn't remove the columns from the database, because that's fiddly.
* Implement a batched presence_handler.get_state and use itErik Johnston2015-08-171-12/+6
|
* Fix _filter_events_for_clientErik Johnston2015-08-121-3/+1
|
* Simplify staggered deferred listsErik Johnston2015-08-121-2/+2
|
* Use list comprehension instead of filterErik Johnston2015-08-121-10/+3
|
* Remove debug loggersErik Johnston2015-08-111-3/+0
|