summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* changelogRichard van der Hoff2018-09-261-0/+1
|
* Fix error handling for missing auth_eventRichard van der Hoff2018-09-261-2/+2
| | | | | | | | | | When we were authorizing an event, if there was no `m.room.create` in its auth_events, we would raise a SynapseError with a cryptic message, which then meant that we would bail out of processing any incoming events, rather than storing a rejection for the faulty event and moving on. We should treat the absent event the same as any other auth failure, by raising an AuthError, so that the event is marked as rejected.
* Merge branch 'develop' into rav/hacky_cache_factor_fixRichard van der Hoff2018-09-266-315/+320
|\
| * Merge pull request #3956 from matrix-org/rav/fix_expiring_cache_lenRichard van der Hoff2018-09-263-20/+25
| |\ | | | | | | Fix ExpiringCache.__len__ to be accurate
| | * Log which cache is throwing exceptionsRichard van der Hoff2018-09-261-10/+17
| | |
| | * changelogRichard van der Hoff2018-09-261-0/+1
| | |
| | * Fix ExpiringCache.__len__ to be accurateErik Johnston2018-09-261-10/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It used to try and produce an estimate, which was sometimes negative. This caused metrics to be sad, so lets always just calculate it from scratch. (This appears to have been a longstanding bug, but one which has been made more of a problem by #3932 and #3933). (This was originally done by Erik as part of #3933. I'm cherry-picking it because really it's a fix in its own right)
| * | Merge pull request #3948 from matrix-org/rav/no_symlink_synctlAmber Brown2018-09-263-285/+285
| |\ \ | | | | | | | | Move synctl into top dir to avoid a symlink
| | * | changelogRichard van der Hoff2018-09-251-0/+1
| | | |
| | * | Move synctl into top dir to avoid a symlinkRichard van der Hoff2018-09-252-285/+284
| | | | | | | | | | | | | | | | | | | | | | | | symlinks apparently break setuptools on python3 and alpine (https://bugs.python.org/issue31940), so let's stop using a symlink and just use the file directly.
* | | | Actuall set cache factors in workersErik Johnston2018-09-261-5/+15
|/ / /
* | | Merge pull request #3924 from matrix-org/rav/clean_up_on_receive_pduAmber Brown2018-09-263-24/+48
|\ \ \ | |_|/ |/| | Comments and interface cleanup for on_receive_pdu
| * | changelogRichard van der Hoff2018-09-201-0/+1
| | |
| * | Comments and interface cleanup for on_receive_pduRichard van der Hoff2018-09-202-24/+47
| | | | | | | | | | | | | | | | | | | | | | | | Add some informative comments about what's going on here. Also, `sent_to_us_directly` and `get_missing` were doing the same thing (apart from in `_handle_queued_pdus`, which looks like a bug), so let's get rid of `get_missing` and use `sent_to_us_directly` consistently.
* | | Merge pull request #3911 from matrix-org/jcgruenhage/docker-support-python3Richard van der Hoff2018-09-253-2/+5
|\ \ \ | | | | | | | | make python 3 work in the docker container
| * | | Update DockerfileJan Christian Grünhage2018-09-251-1/+0
| | | |
| * | | Update .dockerignoreJan Christian Grünhage2018-09-251-1/+0
| | | |
| * | | add changelogJan Christian Grünhage2018-09-201-0/+1
| | | |
| * | | make python 3 work in the docker containerJan Christian Grünhage2018-09-203-2/+6
| | | |
* | | | Update grafana dashboardRichard van der Hoff2018-09-251-175/+417
| | | |
* | | | Merge pull request #3932 from matrix-org/erikj/auto_start_expiring_cachesRichard van der Hoff2018-09-2517-39/+13
|\ \ \ \ | | | | | | | | | | Fix some instances of ExpiringCache not expiring cache items
| * | | | NewsfileErik Johnston2018-09-211-0/+1
| | | | |
| * | | | Fix some instances of ExpiringCache not expiring cache itemsErik Johnston2018-09-2116-39/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ExpiringCache required that `start()` be called before it would actually start expiring entries. A number of places didn't do that. This PR removes `start` from ExpiringCache, and automatically starts backround reaping process on creation instead.
* | | | | added "media-src: 'self'" to CSP for resources (#3578)Jérémy Farnaud2018-09-252-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse doesn’t allow for media resources to be played directly from Chrome. It is a problem for users on other networks (e.g. IRC) communicating with Matrix users through a gateway. The gateway sends them the raw URL for the resource when a Matrix user uploads a video and the video cannot be played directly in Chrome using that URL. Chrome argues it is not authorized to play the video because of the Content Security Policy. Chrome checks for the "media-src" policy which is missing, and defauts to the "default-src" policy which is "none". As Synapse already sends "object-src: 'self'" I thought it wouldn’t be a problem to add "media-src: 'self'" to the CSP to fix this problem.
* | | | | Merge pull request #3925 from matrix-org/erikj/fix_producers_unregisteredRichard van der Hoff2018-09-252-14/+36
|\ \ \ \ \ | | | | | | | | | | | | Fix spurious exceptions when client closes conncetion
| * | | | | NewsfileErik Johnston2018-09-201-0/+1
| | | | | |
| * | | | | Fix spurious exceptions when client closes conncetionErik Johnston2018-09-201-14/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a HTTP handler throws an exception while processing a request we automatically write a JSON error response. If the handler had already started writing a response twisted throws an exception. We should check for this case and simple abort the connection if there was an error after the response had started being written.
* | | | | | Merge pull request #3947 from matrix-org/rav/attr_versionRichard van der Hoff2018-09-252-1/+4
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | We require attrs 16.0.0
| * | | | | changelogRichard van der Hoff2018-09-251-0/+1
| | | | | |
| * | | | | We require attrs 16.0.0Richard van der Hoff2018-09-251-1/+3
|/ / / / / | | | | | | | | | | | | | | | Ref: https://github.com/matrix-org/synapse/issues/3945
* | | | | Only lazy load self-members on initial syncMatthew Hodgson2018-09-252-5/+9
| | | | | | | | | | | | | | | Given we have disabled lazy loading for incr syncs in #3840, we can make self-LL more efficient by only doing it on initial sync. Also adds a bounds check for if/when we change our mind, so that we don't try to include LL members on sync responses with no timeline.
* | | | | Merge branch 'master' into developAmber Brown2018-09-253-3/+13
|\ \ \ \ \
| * \ \ \ \ Merge tag 'v0.33.5.1'Amber Brown2018-09-253-3/+13
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Internal Changes ---------------- - Fix incompatibility with older Twisted version in tests. Thanks @OlegGirko! ([\#3940](https://github.com/matrix-org/synapse/issues/3940))
| | * | | | | changelog v0.33.5.1 github/release-v0.33.5.1 release-v0.33.5.1Amber Brown2018-09-252-2/+10
| | | | | | |
| | * | | | | bump versionAmber Brown2018-09-251-1/+1
| | | | | | |
| | * | | | | changelog for 3940Amber Brown2018-09-251-0/+2
| | | | | | |
| | * | | | | Fix compatibility issue with older Twisted in tests.Oleg Girko2018-09-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Older Twisted (18.4.0) returns TimeoutError instead of ConnectingCancelledError when connection times out. This change allows tests to be compatible with this behaviour. Signed-off-by: Oleg Girko <ol@infoserver.lv>
* | | | | | | Merge branch 'master' into developAmber Brown2018-09-2442-40/+65
|\| | | | | | | |_|_|/ / / |/| | | | |
| * | | | | Merge tag 'v0.33.5'Amber Brown2018-09-2487-1091/+1998
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Features -------- - Python 3.5 and 3.6 support is now in beta. ([\#3576](https://github.com/matrix-org/synapse/issues/3576)) - Implement `event_format` filter param in `/sync` ([\#3790](https://github.com/matrix-org/synapse/issues/3790)) - Add synapse_admin_mau:registered_reserved_users metric to expose number of real reaserved users ([\#3846](https://github.com/matrix-org/synapse/issues/3846)) Bugfixes -------- - Remove connection ID for replication prometheus metrics, as it creates a large number of new series. ([\#3788](https://github.com/matrix-org/synapse/issues/3788)) - guest users should not be part of mau total ([\#3800](https://github.com/matrix-org/synapse/issues/3800)) - Bump dependency on pyopenssl 16.x, to avoid incompatibility with recent Twisted. ([\#3804](https://github.com/matrix-org/synapse/issues/3804)) - Fix existing room tags not coming down sync when joining a room ([\#3810](https://github.com/matrix-org/synapse/issues/3810)) - Fix jwt import check ([\#3824](https://github.com/matrix-org/synapse/issues/3824)) - fix VOIP crashes under Python 3 (#3821) ([\#3835](https://github.com/matrix-org/synapse/issues/3835)) - Fix manhole so that it works with latest openssh clients ([\#3841](https://github.com/matrix-org/synapse/issues/3841)) - Fix outbound requests occasionally wedging, which can result in federation breaking between servers. ([\#3845](https://github.com/matrix-org/synapse/issues/3845)) - Show heroes if room name/canonical alias has been deleted ([\#3851](https://github.com/matrix-org/synapse/issues/3851)) - Fix handling of redacted events from federation ([\#3859](https://github.com/matrix-org/synapse/issues/3859)) - ([\#3874](https://github.com/matrix-org/synapse/issues/3874)) - Mitigate outbound federation randomly becoming wedged ([\#3875](https://github.com/matrix-org/synapse/issues/3875)) Internal Changes ---------------- - CircleCI tests now run on the potential merge of a PR. ([\#3704](https://github.com/matrix-org/synapse/issues/3704)) - http/ is now ported to Python 3. ([\#3771](https://github.com/matrix-org/synapse/issues/3771)) - Improve human readable error messages for threepid registration/account update ([\#3789](https://github.com/matrix-org/synapse/issues/3789)) - Make /sync slightly faster by avoiding needless copies ([\#3795](https://github.com/matrix-org/synapse/issues/3795)) - handlers/ is now ported to Python 3. ([\#3803](https://github.com/matrix-org/synapse/issues/3803)) - Limit the number of PDUs/EDUs per federation transaction ([\#3805](https://github.com/matrix-org/synapse/issues/3805)) - Only start postgres instance for postgres tests on Travis CI ([\#3806](https://github.com/matrix-org/synapse/issues/3806)) - tests/ is now ported to Python 3. ([\#3808](https://github.com/matrix-org/synapse/issues/3808)) - crypto/ is now ported to Python 3. ([\#3822](https://github.com/matrix-org/synapse/issues/3822)) - rest/ is now ported to Python 3. ([\#3823](https://github.com/matrix-org/synapse/issues/3823)) - add some logging for the keyring queue ([\#3826](https://github.com/matrix-org/synapse/issues/3826)) - speed up lazy loading by 2-3x ([\#3827](https://github.com/matrix-org/synapse/issues/3827)) - Improved Dockerfile to remove build requirements after building reducing the image size. ([\#3834](https://github.com/matrix-org/synapse/issues/3834)) - Disable lazy loading for incremental syncs for now ([\#3840](https://github.com/matrix-org/synapse/issues/3840)) - federation/ is now ported to Python 3. ([\#3847](https://github.com/matrix-org/synapse/issues/3847)) - Log when we retry outbound requests ([\#3853](https://github.com/matrix-org/synapse/issues/3853)) - Removed some excess logging messages. ([\#3855](https://github.com/matrix-org/synapse/issues/3855)) - Speed up purge history for rooms that have been previously purged ([\#3856](https://github.com/matrix-org/synapse/issues/3856)) - Refactor some HTTP timeout code. ([\#3857](https://github.com/matrix-org/synapse/issues/3857)) - Fix running merged builds on CircleCI ([\#3858](https://github.com/matrix-org/synapse/issues/3858)) - Fix typo in replication stream exception. ([\#3860](https://github.com/matrix-org/synapse/issues/3860)) - Add in flight real time metrics for Measure blocks ([\#3871](https://github.com/matrix-org/synapse/issues/3871)) - Disable buffering and automatic retrying in treq requests to prevent timeouts. ([\#3872](https://github.com/matrix-org/synapse/issues/3872)) - mention jemalloc in the README ([\#3877](https://github.com/matrix-org/synapse/issues/3877)) - Remove unmaintained "nuke-room-from-db.sh" script ([\#3888](https://github.com/matrix-org/synapse/issues/3888))
| | * | | | towncrier v0.33.5 github/release-v0.33.5 release-v0.33.5Amber Brown2018-09-241-0/+6
| | | | | |
| | * | | | update versionAmber Brown2018-09-241-1/+1
| | | | | |
| | * | | | changelog v0.33.5rc1Amber Brown2018-09-1741-39/+58
| | | | | |
| | * | | | update python 3 changelogAmber Brown2018-09-171-1/+1
| | | | | |
| | * | | | versionAmber Brown2018-09-171-1/+1
| | | | | |
* | | | | | Merge pull request #3927 from matrix-org/erikj/handle_background_errorsErik Johnston2018-09-212-0/+7
|\ \ \ \ \ \ | | | | | | | | | | | | | | Handle exceptions thrown by background tasks
| * | | | | | Add missing loggerErik Johnston2018-09-201-0/+4
| | | | | | |
| * | | | | | NewsfileErik Johnston2018-09-201-0/+1
| | | | | | |
| * | | | | | Handle exceptions thrown by background tasksErik Johnston2018-09-201-0/+2
| | |_|/ / / | |/| | | | | | | | | | | | | | | | Fixes #3921
* | | | | | Always LL ourselves if we're in a room to simplify clients (#3916)Matthew Hodgson2018-09-202-0/+5
| |_|_|/ / |/| | | | | | | | | | | | | | Should fix https://github.com/vector-im/riot-web/issues/7209
* | | | | Merge pull request #3868 from matrix-org/neilj/fix_room_invite_mail_linksNeil Johnson2018-09-202-1/+2
|\ \ \ \ \ | |_|_|_|/ |/| | | | Neilj/fix room invite mail links
| * | | | Merge remote-tracking branch 'origin/develop' into ↵Richard van der Hoff2018-09-1831-98/+351
| |\ \ \ \ | | | | | | | | | | | | | | | | | | neilj/fix_room_invite_mail_links
| * | | | | towncrierNeil Johnson2018-09-131-0/+1
| | | | | |
| * | | | | fix link for case that config.email_riot_base_url is setNeil Johnson2018-09-131-1/+1
| | | | | |
* | | | | | Fix client IPs being broken on Python 3 (#3908)Amber Brown2018-09-209-58/+238
| |_|/ / / |/| | | |
* | | | | Merge pull request #3914 from matrix-org/erikj/remove_retry_cacheErik Johnston2018-09-202-8/+1
|\ \ \ \ \ | | | | | | | | | | | | Remove get_destination_retry_timings cache
| * | | | | Fix up changelog and remove spurious commentErik Johnston2018-09-192-3/+1
| | | | | |
| * | | | | pep8Erik Johnston2018-09-191-1/+0
| | | | | |
| * | | | | NewsfileErik Johnston2018-09-191-0/+1
| | | | | |
| * | | | | Remove get_destination_retry_timings cacheErik Johnston2018-09-191-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we rely on the master to invalidate this cache promptly. However, after having moved most federation endpoints off of master this no longer happens, causing outbound fedeariont to get blackholed. Fixes #3798
* | | | | | Add a way to run tests in PostgreSQL in Docker (#3699)Amber Brown2018-09-208-9/+79
| | | | | |
* | | | | | Add a regression test for logging on failed connections (#3912)Amber Brown2018-09-204-5/+77
| | | | | |
* | | | | | Improve the logging when handling a federation transaction (#3904)Richard van der Hoff2018-09-193-56/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let's try to rationalise the logging that happens when we are processing an incoming transaction, to make it easier to figure out what is going wrong when they take ages. In particular: - make everything start with a [room_id event_id] prefix - make sure we log a warning when catching exceptions rather than just turning them into other, more cryptic, exceptions.
* | | | | | Merge pull request #3910 from matrix-org/erikj/update_timeoutErik Johnston2018-09-195-87/+52
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Update to use new timeout function everywhere.
| * | | | | FixupErik Johnston2018-09-192-4/+1
| | | | | |
| * | | | | Replace custom DeferredTimeoutError with defer.TimeoutErrorErik Johnston2018-09-192-12/+5
| | | | | |
| * | | | | Run canceller first to allow it to generate correct errorErik Johnston2018-09-191-2/+5
| | | | | |
| * | | | | NewsfileErik Johnston2018-09-191-0/+1
| | | | | |
| * | | | | Update to use new timeout function everywhere.Erik Johnston2018-09-194-72/+43
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The existing deferred timeout helper function (and the one into twisted) suffer from a bug when a deferred's canceller throws an exception, #3842. The new helper function doesn't suffer from this problem.
* | | | | update changelog for #3909Richard van der Hoff2018-09-191-1/+1
| | | | |
* | | | | Merge pull request #3909 from turt2live/travis/fix-logging-1Amber Brown2018-09-192-4/+5
|\ \ \ \ \ | | | | | | | | | | | | Fix matrixfederationclient.py logging: Destination is a string
| * | | | | ChangelogTravis Ralston2018-09-181-0/+1
| | | | | |
| * | | | | Destination is a stringTravis Ralston2018-09-181-4/+4
| | | | | |
* | | | | | Remove documentation referencing Cygwin (#3873)Amber Brown2018-09-193-31/+10
| | | | | |
* | | | | | Merge pull request #3907 from matrix-org/rav/set_sni_to_server_nameAmber Brown2018-09-192-3/+11
|\ \ \ \ \ \ | | | | | | | | | | | | | | Set SNI to the server_name, not whatever was in the SRV record
| * | | | | | changelogRichard van der Hoff2018-09-181-0/+1
| | | | | | |
| * | | | | | Set SNI to the server_name, not whatever was in the SRV recordRichard van der Hoff2018-09-181-3/+10
| | |_|/ / / | |/| | | | | | | | | | | | | | | | Fixes #3843
* | | | | | Merge pull request #3903 from matrix-org/rav/increase_get_missing_events_timeoutAmber Brown2018-09-192-1/+31
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Bump timeout on get_missing_events request
| * | | | | changelogRichard van der Hoff2018-09-181-0/+1
| | | | | |
| * | | | | Bump timeout on get_missing_events requestRichard van der Hoff2018-09-181-1/+30
| |/ / / /
* | | | | Use directory server for room joins (#3899)Richard van der Hoff2018-09-182-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we do a join, always try the server we used for the alias lookup first. Fixes #2418
* | | | | Refactor matrixfederationclient to fix logging (#3906)Richard van der Hoff2018-09-185-186/+359
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want to wait until we have read the response body before we log the request as complete, otherwise a confusing thing happens where the request appears to have completed, but we later fail it. To do this, we factor the salient details of a request out to a separate object, which can then keep track of the txn_id, so that it can be logged.
* | | | | Merge pull request #3894 from matrix-org/hs/phone_home_py_versionAmber Brown2018-09-192-0/+5
|\ \ \ \ \ | |/ / / / |/| | | | Add python_version phone home stat
| * | | | Create 3894.featureWill Hunt2018-09-171-0/+1
| | | | |
| * | | | typoWill Hunt2018-09-171-1/+1
| | | | |
| * | | | make pip happy?Will Hunt2018-09-171-2/+4
| | | | |
| * | | | Use a string for versionsWill Hunt2018-09-171-1/+1
| | | | |
| * | | | Add python_version phone home statWill Hunt2018-09-171-0/+2
| | | | |
* | | | | Merge pull request #3879 from matrix-org/matthew/fix-autojoinRichard van der Hoff2018-09-182-0/+2
|\ \ \ \ \ | | | | | | | | | | | | don't ratelimit autojoins
| * | | | | changelogMatthew Hodgson2018-09-151-0/+1
| | | | | |
| * | | | | don't ratelimit autojoinsMatthew Hodgson2018-09-151-0/+1
| | | | | |
* | | | | | Merge pull request #3882 from SimmyD/max_upload_docker_varRichard van der Hoff2018-09-183-1/+3
|\ \ \ \ \ \ | | | | | | | | | | | | | | Add variable for changing the max upload size in Docker container
| * | | | | | Adding the ability to change MAX_UPLOAD_SIZE for the docker container variables.Simon Dwyer2018-09-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Simon Dwyer <simon@thedwyers.co>
| * | | | | | Added description for "SYNAPSE_MAX_UPLOAD_SIZE" variable.Simon Dwyer2018-09-161-1/+1
| | | | | | |
| * | | | | | Added description for "SYNAPSE_MAX_UPLOAD_SIZE" variable.Simon Dwyer2018-09-161-0/+1
| | | | | | |
| * | | | | | Added 'MAX_UPLOAD_SIZE' variable and set default to "10M"Simon Dwyer2018-09-161-1/+1
| |/ / / / /
* | | | | | Merge pull request #3889 from matrix-org/rav/404_on_remove_unknown_aliasRichard van der Hoff2018-09-183-4/+17
|\ \ \ \ \ \ | | | | | | | | | | | | | | Return a 404 when deleting unknown room alias
| * | | | | | Reinstate missing null checkRichard van der Hoff2018-09-171-1/+1
| | | | | | |
| * | | | | | changelogRichard van der Hoff2018-09-171-0/+1
| | | | | | |
| * | | | | | Return a 404 when deleting unknown room aliasRichard van der Hoff2018-09-172-4/+16
| | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | As per https://github.com/matrix-org/matrix-doc/issues/1675 Fixes https://github.com/matrix-org/synapse/issues/2782
* | | | | | Merge pull request #3895 from matrix-org/rav/decode_bytes_in_metricsRichard van der Hoff2018-09-183-12/+13
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix more b'abcd' noise in metrics
| * | | | | | changelogRichard van der Hoff2018-09-171-0/+1
| | | | | | |
| * | | | | | Fix more b'abcd' noise in metricsRichard van der Hoff2018-09-172-12/+12
| | | | | | |
* | | | | | | Merge pull request #3897 from aaronraimist/synaspse-typoRichard van der Hoff2018-09-182-1/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix typo in README, synaspse -> synapse
| * | | | | | | Add changelogAaron Raimist2018-09-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
| * | | | | | | Fix typo in README, synaspse -> synapseAaron Raimist2018-09-171-1/+1
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
* | | | / / / Merge pull request #3892 from matrix-org/rav/decode_bytes_in_request_logsRichard van der Hoff2018-09-173-5/+9
|\| | | | | | | |_|_|/ / / |/| | | | | Fix some b'abcd' noise in logs and metrics
| * | | | | changelogRichard van der Hoff2018-09-171-0/+1
| | | | | |
| * | | | | Fix some b'abcd' noise in logs and metricsRichard van der Hoff2018-09-172-5/+8
|/ / / / / | | | | | | | | | | | | | | | | | | | | Python 3 compatibility: make sure that we decode some byte sequences before we use them to create log lines and metrics labels.
* / / / / README: run python_dependencies with -mRichard van der Hoff2018-09-171-1/+1
|/ / / / | | | | | | | | ... to stop things which try to import `types` getting `synapse.types` instead
* | | | Merge pull request #3888 from matrix-org/rav/nuke_nuke_roomsAmber Brown2018-09-172-57/+1
|\ \ \ \ | |/ / / |/| | | Remove nuke-room-from-db.sh script
| * | | changelogRichard van der Hoff2018-09-171-0/+1
| | | |
| * | | Remove nuke-room-from-db.sh scriptRichard van der Hoff2018-09-171-57/+0
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem with this script is that it is largely untested, entirely unmaintained, and running it is likely to make your synapse blow up in exciting ways. For example, it leaves a bunch of tables with dead values in it, like event_to_state_groups. Having it here sends a message that it is a supported part of synapse, which is absolutely not the case.
* | | missing changelogMatthew Hodgson2018-09-151-0/+1
| | |
* | | mention libjemalloc in readme (#3877)Vincent Breitmoser2018-09-151-0/+8
| | |
* | | Fix timeout functionErik Johnston2018-09-151-1/+2
| | | | | | | | | | | | | | | Turns out deferred.cancel sometimes throws, so we do that last to ensure that we always do resolve the new deferred.
* | | Merge pull request #3875 from matrix-org/erikj/extra_timeoutsErik Johnston2018-09-143-0/+63
|\ \ \ | | | | | | | | Add an awful secondary timeout to fix wedged requests
| * | | NewsfileErik Johnston2018-09-141-0/+1
| | | |
| * | | Add an awful secondary timeout to fix wedged requestsErik Johnston2018-09-142-0/+62
|/ / / | | | | | | | | | This is an attempt to mitigate #3842 by adding yet-another-timeout
* | | don't filter membership events based on history visibility (#3874)Matthew Hodgson2018-09-142-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | don't filter membership events based on history visibility as we will already have filtered the messages in the timeline, and state events are always visible. and because @erikjohnston said so.
* | | Merge pull request #3872 from matrix-org/hawkowl/timeouts-2Erik Johnston2018-09-145-7/+13
|\ \ \ | | | | | | | | timeouts 2: electric boogaloo
| * | | fixAmber Brown2018-09-151-3/+3
| | | |
| * | | changelogAmber Brown2018-09-151-0/+1
| | | |
| * | | fixAmber Brown2018-09-141-1/+4
| | | |
| * | | fixAmber Brown2018-09-141-1/+1
| | | |
| * | | redact betterAmber Brown2018-09-141-2/+2
| | | |
| * | | we do that higher upAmber Brown2018-09-141-0/+1
| | | |
| * | | Merge remote-tracking branch 'origin/develop' into hawkowl/timeouts-2Amber Brown2018-09-148-61/+55
| |\| |
| * | | buffer?Amber Brown2018-09-141-1/+2
| | | |
* | | | Merge pull request #3871 from matrix-org/erikj/in_flight_block_metricsErik Johnston2018-09-145-4/+217
|\ \ \ \ | | | | | | | | | | Add in flight real time metrics for Measure blocks
| * | | | Remove spurious commentErik Johnston2018-09-141-2/+0
| | | | |
| * | | | Measure outbound requestsErik Johnston2018-09-141-3/+6
| | | | |
| * | | | NewsfileErik Johnston2018-09-141-0/+1
| | | | |
| * | | | TestsErik Johnston2018-09-141-0/+81
| | | | |
| * | | | Add in flight real time metrics for Measure blocksErik Johnston2018-09-142-1/+131
|/ / / /
* | | | Merge pull request #3860 from matrix-org/travis/typo-1Travis Ralston2018-09-132-1/+2
|\ \ \ \ | |_|/ / |/| | | Fix minor typo in exception
| * | | Create 3860.miscTravis Ralston2018-09-131-0/+1
| | | |
| * | | Fix minor typo in exceptionTravis Ralston2018-09-131-1/+1
|/ / /
* / / merge (#3576)Amber Brown2018-09-148-61/+55
|/ /
* | Merge pull request #3856 from matrix-org/erikj/speed_up_purge hhs-8Erik Johnston2018-09-132-16/+29
|\ \ | | | | | | Make purge history slightly faster
| * | commentErik Johnston2018-09-131-0/+2
| | |
| * | pep8Erik Johnston2018-09-131-1/+0
| | |
| * | Create indices after insertionErik Johnston2018-09-131-14/+18
| | |
| * | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-09-134-2/+28
| |\ \ | | | | | | | | | | | | erikj/speed_up_purge
| * | | NewsfileErik Johnston2018-09-131-0/+1
| | | |
| * | | Make purge history slightly fasterErik Johnston2018-09-131-2/+9
| | | | | | | | | | | | | | | | | | | | Don't pull out events that are outliers and won't be deleted, as nothing should happen to them.
* | | | Merge pull request #3859 from matrix-org/erikj/add_iterkeysAmber Brown2018-09-143-1/+7
|\ \ \ \ | | | | | | | | | | Fix handling of redacted events from federation
| * | | | NewsfileErik Johnston2018-09-131-0/+1
| | | | |
| * | | | Fix handling of redacted events from federationErik Johnston2018-09-132-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we receive an event that doesn't pass their content hash check (e.g. due to already being redacted) then we hit a bug which causes an exception to be raised, which then promplty stops the event (and request) from being processed. This effects all sorts of federation APIs, including joining rooms with a redacted state event.
* | | | | fix circleci merged builds (#3858)Amber Brown2018-09-142-0/+5
|/ / / / | | | | | | | | | | | | | | | | | | | | * fix * changelog
* | / / Attempt to figure out what's going on with timeouts (#3857)Amber Brown2018-09-144-57/+241
| |/ / |/| |
* | | Remove some superfluous logging (#3855)Amber Brown2018-09-134-2/+28
|/ /
* | Merge pull request #3846 from matrix-org/neilj/expose-registered-users hhs-7Neil Johnson2018-09-124-3/+60
|\ \ | | | | | | expose number of real reserved users
| * | improve namingNeil Johnson2018-09-124-10/+14
| | |
| * | towncrierNeil Johnson2018-09-121-0/+1
| | |
| * | expose number of real reserved usersNeil Johnson2018-09-123-3/+55
| | |
* | | show heroes if a room has a 'deleted' name/canonical_alias (#3851)Matthew Hodgson2018-09-122-2/+16
| | |
* | | Merge pull request #3853 from matrix-org/erikj/log_outbound_each_timeErik Johnston2018-09-122-75/+75
|\ \ \ | | | | | | | | Log outbound requests when we retry
| * | | NewsfileErik Johnston2018-09-121-0/+1
| | | |
| * | | Log outbound requests when we retryErik Johnston2018-09-121-75/+74
| | | |
* | | | argh pep8Matthew Hodgson2018-09-121-1/+1
| | | |
* | | | correctly log gappy sync metricsMatthew Hodgson2018-09-121-1/+1
| | | |
* | | | fix loglineMatthew Hodgson2018-09-121-1/+1
| | | |
* | | | Merge pull request #3841 from matrix-org/erikj/manhole_key_lengthErik Johnston2018-09-122-13/+32
|\ \ \ \ | | | | | | | | | | Change the manhole SSH key to have more bits
| * | | | NewsfileErik Johnston2018-09-111-0/+1
| | | | |
| * | | | Change the manhole SSH key to have more bitsErik Johnston2018-09-111-13/+31
| | | | | | | | | | | | | | | | | | | | | | | | | Newer versions of openssh client refuse to connect to the old key due to its length.
* | | | | Add JUnit summaries to CircleCI as well as merged runs (#3704)Amber Brown2018-09-123-0/+94
| | | | |
* | | | | Port federation/ to py3 (#3847)Amber Brown2018-09-124-19/+19
| | | | |
* | | | | Merge pull request #3835 from krombel/fix_3821Amber Brown2018-09-122-1/+6
|\ \ \ \ \ | | | | | | | | | | | | fix VOIP crashes under Python 3
| * | | | | add changelogKrombel2018-09-101-0/+1
| | | | | |
| * | | | | fix VOIP crashes under Python 3 (#3821)Krombel2018-09-101-1/+5
| | | | | |
* | | | | | Merge pull request #3826 from matrix-org/rav/logging_for_keyringAmber Brown2018-09-124-13/+47
|\ \ \ \ \ \ | | | | | | | | | | | | | | add some logging for the keyring queue
| * | | | | | changelogRichard van der Hoff2018-09-071-0/+1
| | | | | | |
| * | | | | | clearer logging when things fail, tooRichard van der Hoff2018-09-062-7/+28
| | | | | | |
| * | | | | | add some logging for the keyring queueRichard van der Hoff2018-09-061-6/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | why is it so damn slow?
* | | | | | | Merge pull request #3824 from matrix-org/rav/fix_jwt_importAmber Brown2018-09-123-1/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix jwt import check
| * | | | | | | changelogRichard van der Hoff2018-09-071-0/+1
| | | | | | | |
| * | | | | | | Fix jwt import checkRichard van der Hoff2018-09-072-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This handy code attempted to check that we could import jwt, but utterly failed to check it was the right jwt. Fixes https://github.com/matrix-org/synapse/issues/3793
* | | | | | | | Port rest/ to Python 3 (#3823)Amber Brown2018-09-1218-100/+113
| |_|_|_|/ / / |/| | | | | |
* | | | | | | Port crypto/ to Python 3 (#3822)Amber Brown2018-09-124-6/+14
| | | | | | |
* | | | | | | Merge pull request #3845 from matrix-org/erikj/timeout_readsAmber Brown2018-09-122-7/+46
|\ \ \ \ \ \ \ | |_|_|_|_|/ / |/| | | | | | Timeout reading body for outbound HTTP requests
| * | | | | | NewsfileErik Johnston2018-09-121-0/+1
| | | | | | |
| * | | | | | Timeout reading body for outbound HTTP requestsErik Johnston2018-09-121-7/+45
|/ / / / / /
* | | | / / Speed up lazy loading (#3827)Matthew Hodgson2018-09-125-30/+159
| |_|_|/ / |/| | | | | | | | | | | | | | | | | | | * speed up room summaries by pulling their data from room_memberships rather than room state * disable LL for incr syncs, and log incr sync stats (#3840)
* | | | | Merge pull request #3834 from mvgorcum/developErik Johnston2018-09-102-10/+17
|\ \ \ \ \ | |_|_|/ / |/| | | | Remove build requirements after building docker image
| * | | | add runtime dependenciesJan Christian Grünhage2018-09-101-5/+10
| | | | |
| * | | | NewsfileMathijs van Gorcum2018-09-101-0/+1
| | | | |
| * | | | Move COPY before RUN and merge RUNsMathijs van Gorcum2018-09-101-5/+5
| | | | |
| * | | | Remove build requirements after buildingMathijs van Gorcum2018-09-101-2/+3
|/ / / /
* | | | Merge pull request #3810 from matrix-org/erikj/send_tags_down_sync_on_joinAmber Brown2018-09-072-0/+14
|\ \ \ \ | | | | | | | | | | Send existing room tags down sync on join
| * | | | NewsfileErik Johnston2018-09-061-0/+1
| | | | |
| * | | | Don't send empty tags list down syncErik Johnston2018-09-061-0/+5
| | | | |
| * | | | Send existing room tags down sync on joinErik Johnston2018-09-061-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a user joined a room any existing tags were not sent down the sync stream. Ordinarily this isn't a problem because the user needs to be in the room to have set tags in it, however synapse will sometimes add tags for a user to a room, e.g. for server notices, which need to come down sync.
* | | | | Merge pull request #3783 from cwmke/developRichard van der Hoff2018-09-071-0/+12
|\ \ \ \ \ | |_|/ / / |/| | | | Add apache vhost config to Readme
| * | | | Remove end '/'sColin W2018-09-021-2/+2
| | | | |
| * | | | Update readme on develop branchColin W2018-09-021-0/+12
| | | | |
* | | | | Merge branch 'master' into developAmber Brown2018-09-0729-28/+61
|\ \ \ \ \ | | |_|_|/ | |/| | |
| * | | | changelog v0.33.4 github/release-v0.33.4 release-v0.33.4Amber Brown2018-09-072-1/+9
| | | | |
| * | | | versionAmber Brown2018-09-071-1/+1
| | | | |
| * | | | Merge branch 'master' of github.com:matrix-org/synapse into release-v0.33.4 v0.33.4rc2Erik Johnston2018-09-060-0/+0
| |\ \ \ \
| * | | | | Bump version and changelogErik Johnston2018-09-062-1/+7
| | | | | |
| * | | | | Merge tag 'v0.33.3.1' into release-v0.33.4Erik Johnston2018-09-067-46/+158
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse 0.33.3.1 (2018-09-06) ============================= SECURITY FIXES -------------- - Fix an issue where event signatures were not always correctly validated ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) - Fix an issue where server_acls could be circumvented for incoming events ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) Internal Changes ---------------- - Unignore synctl in .dockerignore to fix docker builds ([\#3802](https://github.com/matrix-org/synapse/issues/3802))
| * \ \ \ \ \ Merge pull request #3802 from matrix-org/jcgruenhage/docker-unignore-synctlAmber Brown2018-09-062-1/+1
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | remove synctl from .dockerignore
| | * | | | | | Create 3802.miscJan Christian Grünhage2018-09-061-0/+1
| | | | | | | |
| | * | | | | | remove synctl from .dockerignoreJan Christian Grünhage2018-09-061-1/+0
| |/ / / / / /
| * | | | | | version and towncrier v0.33.4rc1Amber Brown2018-09-0429-28/+45
| | | | | | |
* | | | | | | Port tests/ to Python 3 (#3808)Amber Brown2018-09-0712-430/+349
| | | | | | |
* | | | | | | Merge pull request #3800 from matrix-org/neilj/remove-guests-from-mau-count hhs-6Neil Johnson2018-09-065-6/+54
|\ \ \ \ \ \ \ | |_|_|_|_|/ / |/| | | | | | guest users should not be part of mau total
| * | | | | | ensure guests never enter mau listNeil Johnson2018-09-064-8/+10
| | | | | | |
| * | | | | | towncrierNeil Johnson2018-09-051-0/+1
| | | | | | |
| * | | | | | guest users should not be part of mau totalNeil Johnson2018-09-052-3/+48
| | | | | | |
* | | | | | | Merge pull request #3805 from matrix-org/erikj/limit_transaction_pdus_edusAmber Brown2018-09-072-0/+13
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Limit the number of PDUs/EDUs per fedreation transaction
| * | | | | | | SpellingErik Johnston2018-09-061-1/+1
| | | | | | | |
| * | | | | | | NewsfileErik Johnston2018-09-061-0/+1
| | | | | | | |
| * | | | | | | Limit the number of PDUs/EDUs per fedreation transactionErik Johnston2018-09-061-0/+12
| | | | | | | |
* | | | | | | | Merge pull request #3806 from matrix-org/erikj/limit_postgres_travisAmber Brown2018-09-072-3/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Only start postgres instance for postgres tests on Travis CI
| * | | | | | | | NewsfileErik Johnston2018-09-061-0/+1
| | | | | | | | |
| * | | | | | | | Only start postgres instance for postgres tests on Travis CIErik Johnston2018-09-061-3/+2
| |/ / / / / / /
* | | | | | | | Merge pull request #3788 from matrix-org/erikj/remove_conn_idAmber Brown2018-09-072-12/+13
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Remove conn_id from repl prometheus metrics
| * | | | | | | | Remove conn_idErik Johnston2018-09-041-2/+2
| | | | | | | | |
| * | | | | | | | NewsfileErik Johnston2018-09-031-0/+1
| | | | | | | | |
| * | | | | | | | Remove conn_id from repl prometheus metricsErik Johnston2018-09-031-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conn_id` gets set to a random string, and so we end up filling up prometheus with tonnes of data series, which is bad.
* | | | | | | | | Merge pull request #3795 from matrix-org/erikj/faster_sync_stateAmber Brown2018-09-072-8/+9
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | User iter* during sync state calculations
| * | | | | | | | | NewsfileErik Johnston2018-09-051-0/+1
| | | | | | | | | |
| * | | | | | | | | User iter* during sync state calculationsErik Johnston2018-09-051-8/+8
| | | | | | | | | |
* | | | | | | | | | Merge pull request #3804 from matrix-org/rav/fix_openssl_depAmber Brown2018-09-072-2/+3
|\ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / |/| | | | | | | | | bump dep on pyopenssl to 16.x
| * | | | | | | | | changelogRichard van der Hoff2018-09-061-0/+1
| | | | | | | | | |
| * | | | | | | | | bump dep on pyopenssl to 16.xRichard van der Hoff2018-09-061-2/+2
| | |_|/ / / / / / | |/| | | | | | |
* | | | | | | | | Port handlers/ to Python 3 (#3803)Amber Brown2018-09-078-19/+24
| |_|_|_|_|_|_|/ |/| | | | | | |
* | | | | | | | Merge branch 'master' into developRichard van der Hoff2018-09-069-47/+157
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | / / | | |_|_|_|/ / | |/| | | | |
| * | | | | | Merge tag 'v0.33.3.1'Richard van der Hoff2018-09-069-47/+157
| |\ \ \ \ \ \ | | | |_|_|/ / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse 0.33.3.1 (2018-09-06) ============================= SECURITY FIXES -------------- - Fix an issue where event signatures were not always correctly validated ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) - Fix an issue where server_acls could be circumvented for incoming events ([\#3796](https://github.com/matrix-org/synapse/issues/3796)) Internal Changes ---------------- - Unignore synctl in .dockerignore to fix docker builds ([\#3802](https://github.com/matrix-org/synapse/issues/3802))
| | * | | | | prepare v0.33.3.1 v0.33.3.1 github/release-v0.33.3.1 release-v0.33.3.1Richard van der Hoff2018-09-063-2/+15
| | | | | | |
| | * | | | | Create 3802.miscJan Christian Grünhage2018-09-061-0/+1
| | | | | | |
| | * | | | | remove synctl from .dockerignoreJan Christian Grünhage2018-09-061-1/+0
| | | | | | |
| | * | | | | Fix origin handling for pushed transactionsRichard van der Hoff2018-09-055-29/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the actual origin for push transactions, rather than whatever the remote server claimed.
| | * | | | | Check that signatures on events are validRichard van der Hoff2018-09-051-16/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should check that both the sender's server, and the server which created the event_id (which may be different from whatever the remote server has told us the origin is), have signed the event.
* | | | | | | Merge pull request #3790 from matrix-org/rav/respect_event_format_in_filterRichard van der Hoff2018-09-053-13/+40
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Implement 'event_format' filter param in /sync
| * | | | | | | changelogRichard van der Hoff2018-09-041-0/+1
| | | | | | | |
| * | | | | | | Implement 'event_format' filter param in /syncRichard van der Hoff2018-09-042-13/+39
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | This has been specced and part-implemented; let's implement it for /sync (but no other endpoints yet :/).
* | | | | | | Port http/ to Python 3 (#3771)Amber Brown2018-09-068-186/+134
| |_|_|/ / / |/| | | | |
* | | | | | Merge pull request #3789 from matrix-org/neilj/improve_threepid_error_strings hhs-5Neil Johnson2018-09-043-7/+22
|\ \ \ \ \ \ | |/ / / / / |/| | | | | improve human readable error messages
| * | | | | towncrierNeil Johnson2018-09-041-0/+1
| | | | | |
| * | | | | improve human readable error messageNeil Johnson2018-09-041-1/+2
| | | | | |
| * | | | | improve human readable error messagesNeil Johnson2018-09-042-7/+20
| | | | | |
* | | | | | Fix tests on postgresql (#3740)Amber Brown2018-09-0418-341/+356
| |_|_|/ / |/| | | |
* | | | | Merge pull request #3737 from matrix-org/erikj/remove_redundant_state_funcErik Johnston2018-09-034-57/+8
|\ \ \ \ \ | | | | | | | | | | | | Remove unnecessary resolve_events_with_state_map
| * | | | | NewsfileErik Johnston2018-09-031-0/+1
| | | | | |
| * | | | | Remove unnecessary resolve_events_with_state_mapErik Johnston2018-08-223-57/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only ever used the synchronous resolve_events_with_state_map in one place, which is trivial to replace with the async version.
* | | | | | Merge pull request #3378 from NickEckardt/developAmber Brown2018-09-032-5/+1
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | matrix-synapse-auto-deploy is no longer maintained.
| * | | | | Create 3378.miscAmber Brown2018-09-031-0/+1
| | | | | |
| * | | | | Merge branch 'develop' into developAmber Brown2018-09-03441-11570/+24237
| |\ \ \ \ \ | |/ / / / / |/| | | | |