Skip to content
Snippets Groups Projects
  1. Oct 12, 2021
    • Patrick Cloke's avatar
      Reset global cache state before cache tests. (#11036) · 5c35074d
      Patrick Cloke authored
      This reverts #11019 and structures the code a bit more like it was before #10985.
      
      The global cache state must be reset before running the tests since other test
      cases might have configured caching (and thus touched the global state).
      5c35074d
  2. Oct 08, 2021
  3. Oct 07, 2021
  4. Oct 06, 2021
  5. Oct 05, 2021
    • David Robertson's avatar
      Fix potential leak of per-room profiles when the user dir is rebuilt. (#10981) · 4f00432c
      David Robertson authored
      
      There are two steps to rebuilding the user directory:
      
      1. a scan over rooms, followed by
      2. a scan over local users.
      
      The former reads avatars and display names from the `room_memberships`
      table and therefore contains potentially private avatars and
      display names. The latter reads from the the `profiles` table which only
      contains public data; moreover it will overwrite any private profiles
      that the rooms scan may have written to the user directory. This means
      that the rebuild could leak private user while the rebuild was in
      progress, only to later cover up the leaks once the rebuild had completed.
      
      This change skips over local users when writing user_directory rows
      when scanning rooms. Doing so means that it'll take longer for a rebuild
      to make local users searchable, which is unfortunate. I think a future
      PR can improve this by swapping the order of the two steps above. (And
      indeed there's more to do here, e.g. copying from `profiles` without
      going via Python.)
      
      Small tidy-ups while I'm here:
      
      * Remove duplicated code from test_initial. This was meant to be pulled into `purge_and_rebuild_user_dir`.
      * Move `is_public` before updating sharing tables. No functional change; it's still before the first read of `is_public`.
      * Don't bother creating a set from dict keys. Slightly nicer and makes the code simpler.
      
      Co-authored-by: default avatarRichard van der Hoff <1389908+richvdh@users.noreply.github.com>
      4f00432c
  6. Oct 04, 2021
  7. Oct 01, 2021
  8. Sep 30, 2021
  9. Sep 29, 2021
  10. Sep 28, 2021
    • Richard van der Hoff's avatar
      Inline `_check_event_auth` for outliers (#10926) · 2622b28c
      Richard van der Hoff authored
      * Inline `_check_event_auth` for outliers
      
      When we are persisting an outlier, most of `_check_event_auth` is redundant:
      
       * `_update_auth_events_and_context_for_auth` does nothing, because the
         `input_auth_events` are (now) exactly the event's auth_events,
         which means that `missing_auth` is empty.
      
       * we don't care about soft-fail, kicking guest users or `send_on_behalf_of`
         for outliers
      
      ... so the only thing that matters is the auth itself, so let's just do that.
      
      * `_auth_and_persist_fetched_events_inner`: de-async `prep`
      
      `prep` no longer calls any `async` methods, so let's make it synchronous.
      
      * Simplify `_check_event_auth`
      
      We no longer need to support outliers here, which makes things rather simpler.
      
      * changelog
      
      * lint
      2622b28c
  11. Sep 27, 2021
  12. Sep 24, 2021
    • Brendan Abolivier's avatar
      Add a spamchecker callback to allow or deny room creation based on invites (#10898) · b10257e8
      Brendan Abolivier authored
      This is in the context of creating new module callbacks that modules in https://github.com/matrix-org/synapse-dinsic can use, in an effort to reconcile the spam checker API in synapse-dinsic with the one in mainline.
      
      This adds a callback that's fairly similar to user_may_create_room except it also allows processing based on the invites sent at room creation.
      b10257e8
    • Patrick Cloke's avatar
    • Richard van der Hoff's avatar
      Factor out common code for persisting fetched auth events (#10896) · 85551b7a
      Richard van der Hoff authored
      * Factor more stuff out of `_get_events_and_persist`
      
      It turns out that the event-sorting algorithm in `_get_events_and_persist` is
      also useful in other circumstances. Here we move the current
      `_auth_and_persist_fetched_events` to `_auth_and_persist_fetched_events_inner`,
      and then factor the sorting part out to `_auth_and_persist_fetched_events`.
      
      * `_get_remote_auth_chain_for_event`: remove redundant `outlier` assignment
      
      `get_event_auth` returns events with the outlier flag already set, so this is
      redundant (though we need to update a test where `get_event_auth` is mocked).
      
      * `_get_remote_auth_chain_for_event`: move existing-event tests earlier
      
      Move a couple of tests outside the loop. This is a bit inefficient for now, but
      a future commit will make it better. It should be functionally identical.
      
      * `_get_remote_auth_chain_for_event`: use `_auth_and_persist_fetched_events`
      
      We can use the same codepath for persisting the events fetched as part of an
      auth chain as for those fetched individually by `_get_events_and_persist` for
      building the state at a backwards extremity.
      
      * `_get_remote_auth_chain_for_event`: use a dict for efficiency
      
      `_auth_and_persist_fetched_events` sorts the events itself, so we no longer
      need to care about maintaining the ordering from `get_event_auth` (and no
      longer need to sort by depth in `get_event_auth`).
      
      That means that we can use a map, making it easier to filter out events we
      already have, etc.
      
      * changelog
      
      * `_auth_and_persist_fetched_events`: improve docstring
      85551b7a
    • Erik Johnston's avatar
    • Jason Robinson's avatar
      Fix AuthBlocking check when requester is appservice (#10881) · fa745363
      Jason Robinson authored
      
      If the MAU count had been reached, Synapse incorrectly blocked appservice users even though they've been explicitly configured not to be tracked (the default). This was due to bypassing the relevant if as it was chained behind another earlier hit if as an elif.
      
      Signed-off-by: default avatarJason Robinson <jasonr@matrix.org>
      fa745363
    • David Robertson's avatar
      Improve typing in user_directory files (#10891) · 7f335274
      David Robertson authored
      
      * Improve typing in user_directory files
      
      This makes the user_directory.py in storage pass most of mypy's
      checks (including `no-untyped-defs`). Unfortunately that file is in the
      tangled web of Store class inheritance so doesn't pass mypy at the moment.
      
      The handlers directory has already been mypyed.
      
      Co-authored-by: default avatarreivilibre <olivier@librepush.net>
      7f335274
  13. Sep 23, 2021
Loading