summary refs log tree commit diff
path: root/synapse/federation (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fix handling of redacted events from federationErik Johnston2018-09-131-1/+1
| | | | | | | | | | 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.
* Port federation/ to py3 (#3847)Amber Brown2018-09-123-19/+18
|
* Merge pull request #3826 from matrix-org/rav/logging_for_keyringAmber Brown2018-09-121-7/+27
|\ | | | | add some logging for the keyring queue
| * clearer logging when things fail, tooRichard van der Hoff2018-09-061-7/+27
| |
* | Limit the number of PDUs/EDUs per fedreation transactionErik Johnston2018-09-061-0/+12
|/
* Merge branch 'master' into developRichard van der Hoff2018-09-064-31/+125
|\
| * Fix origin handling for pushed transactionsRichard van der Hoff2018-09-053-15/+15
| | | | | | | | | | 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.
* | Port http/ to Python 3 (#3771)Amber Brown2018-09-061-5/+5
| |
* | fix #3445Krombel2018-08-291-2/+2
| | | | | | | | | | itervalues(d) calls d.itervalues() [PY2] and d.values() [PY3] but SortedDict only implements d.values()
* | Merge pull request #3735 from matrix-org/travis/federation-spellingRichard van der Hoff2018-08-221-1/+1
|\ \ | | | | | | limt -> limit
| * | limt -> limitTravis Ralston2018-07-311-1/+1
| | |
* | | Log more detail when we fail to authenticate requestErik Johnston2018-08-211-3/+3
| | |
* | | Don't log exceptions when failing to fetch server keysErik Johnston2018-08-211-2/+2
| |/ |/| | | | | | | Not being able to resolve or connect to remote servers is an expected error, so we shouldn't log at ERROR with stacktraces.
* | Integrate presence from hotfixes (#3694)Amber Brown2018-08-181-0/+4
| |
* | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-08-151-4/+4
|\ \ | | | | | | | | | erikj/split_federation
| * | Rename async to async_helpers because `async` is a keyword on Python 3.7 (#3678)Amber Brown2018-08-101-4/+4
| | |
* | | Fixup doc commentsErik Johnston2018-08-091-0/+11
| | |
* | | Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2018-08-095-13/+132
|\| | | | | | | | | | | erikj/split_federation
| * | Merge pull request #3664 from matrix-org/rav/federation_metricsRichard van der Hoff2018-08-081-1/+9
| |\ \ | | | | | | | | more metrics for the federation and appservice senders
| | * | more metrics for the federation and appservice sendersRichard van der Hoff2018-08-071-1/+9
| | | |
| * | | Check m.room.create for sane room_versionsRichard van der Hoff2018-08-061-3/+23
| | | |
| * | | include known room versions in outgoing make_joinsRichard van der Hoff2018-08-062-4/+9
| | | |
| * | | sanity check response from make_joinRichard van der Hoff2018-08-031-1/+3
| | | |
| * | | Enforce compatibility when processing make_join requestsRichard van der Hoff2018-08-032-4/+41
| | | | | | | | | | | | | | | | | | | | | | | | Reject make_join requests from servers which do not support the room version. Also include the room version in the response.
| * | | Docstrings for BaseFederationServletRichard van der Hoff2018-08-031-0/+47
| |/ / | | | | | | | | | ... to save me reverse-engineering this stuff again.
* / / Add EDU/query handling over replicationErik Johnston2018-08-061-0/+43
|/ /
* | Merge pull request #3639 from matrix-org/rav/refactor_error_handlingRichard van der Hoff2018-08-021-12/+17
|\ \ | | | | | | Clean up handling of errors from outbound requests
| * | Refactor code for turning HttpResponseException into SynapseErrorRichard van der Hoff2018-08-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This commit replaces SynapseError.from_http_response_exception with HttpResponseException.to_synapse_error. The new method actually returns a ProxiedRequestError, which allows us to pass through additional metadata from the API call.
| * | Be more careful which errors we send back over the C-S APIRichard van der Hoff2018-08-011-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We really shouldn't be sending all CodeMessageExceptions back over the C-S API; it will include things like 401s which we shouldn't proxy. That means that we need to explicitly turn a few HttpResponseExceptions into SynapseErrors in the federation layer. The effect of the latter is that the matrix errcode will get passed through correctly to calling clients, which might help with some of the random M_UNKNOWN errors when trying to join rooms.
* | | Merge pull request #3638 from ↵Richard van der Hoff2018-08-021-129/+148
|\| | | | | | | | | | | | | | matrix-org/rav/refactor_federation_client_exception_handling Factor out exception handling in federation_client
| * | Factor out exception handling in federation_clientRichard van der Hoff2018-08-011-129/+148
| | | | | | | | | | | | | | | Factor out the error handling from make_membership_event, send_join, and send_leave, so that it can be shared.
* | | Merge branch 'master' into developRichard van der Hoff2018-08-021-0/+1
|\ \ \ | |/ / |/| |
| * | Validation for events/rooms in fed requestsRichard van der Hoff2018-08-021-0/+1
| | | | | | | | | | | | | | | | | | | | | When we get a federation request which refers to an event id, make sure that said event is in the room the caller claims it is in. (patch supplied by @turt2live)
* | | Python 3: Convert some unicode/bytes uses (#3569)Amber Brown2018-08-021-1/+1
| |/ |/|
* | Remove pdu_failures from transactionsTravis Ralston2018-07-305-96/+7
| | | | | | The field is never read from, and all the opportunities given to populate it are not utilized. It should be very safe to remove this.
* | Update the send_leave path to be an event_idTravis Ralston2018-07-261-2/+2
| | | | | | It's still not used, however the parameter is an event ID not a transaction ID.
* | Improve logging for exceptions handling PDUsRichard van der Hoff2018-07-231-3/+8
| | | | | | | | when we get an exception handling a federation PDU, log the whole stacktrace.
* | Run things as background processesRichard van der Hoff2018-07-181-9/+6
| | | | | | | | | | | | | | | | This fixes #3518, and ensures that we get useful logs and metrics for lots of things that happen in the background. (There are certainly more things that happen in the background; these are just the common ones I've found running a single-process synapse locally).
* | Resource tracking for background processesRichard van der Hoff2018-07-181-5/+7
|/ | | | | | | | | | | | | | | | This introduces a mechanism for tracking resource usage by background processes, along with an example of how it will be used. This will help address #3518, but more importantly will give us better insights into things which are happening but not being shown up by the request metrics. We *could* do this with Measure blocks, but: - I think having them pulled out as a completely separate metric class will make it easier to distinguish top-level processes from those which are nested. - I want to be able to report on in-flight background processes, and I don't think we want to do this for *all* Measure blocks.
* rename assert_params_in_request to assert_params_in_dictKrombel2018-07-131-2/+2
| | | | | | the method "assert_params_in_request" does handle dicts and not requests. A request body has to be parsed to json before this method can be used
* run isortAmber Brown2018-07-099-64/+57
|
* Implementation of server_aclsRichard van der Hoff2018-07-042-4/+154
| | | | | ... as described at https://docs.google.com/document/d/1EttUVzjc2DWe2ciw4XPtNpUpIl9lWXGEsy2ewDS7rtw.
* More server_name validationRichard van der Hoff2018-07-041-2/+3
| | | | | | | | We need to do a bit more validation when we get a server name, but don't want to be re-doing it all over the shop, so factor out a separate parse_and_validate_server_name, and do the extra validation. Also, use it to verify the server name in the config file.
* Reject invalid server names (#3480)Richard van der Hoff2018-07-031-22/+44
| | | | | Make sure that server_names used in auth headers are sane, and reject them with a sensible error code, before they disappear off into the depths of the system.
* Merge pull request #3456 from matrix-org/hawkowl/federation-prevevent-checkingErik Johnston2018-06-291-1/+3
|\ | | | | Check the state of prev_events a bit more thoroughly when coming over federation
| * handle federation not telling us about prev_eventsAmber Brown2018-06-271-1/+3
| |
* | Attempt to be more performant on PyPy (#3462)Amber Brown2018-06-281-1/+1
|/
* Merge pull request #3428 from matrix-org/erikj/persisted_pduErik Johnston2018-06-221-12/+1
|\ | | | | Simplify get_persisted_pdu
| * simplify get_persisted_pduRichard van der Hoff2018-06-121-12/+1
| | | | | | | | | | it doesn't make much sense to use get_persisted_pdu on the receive path: just get the event straight from the store.
* | Populate synapse_federation_client_sent_pdu_destinations:count again (#3386)Amber Brown2018-06-211-3/+7
| |
* | Remove run_on_reactor (#3395)Amber Brown2018-06-141-4/+0
|/
* federation/send_queue.py: fix usage of sortedcontainers.SortedDictIvan Shapovalov2018-06-061-27/+22
|
* Port to sortedcontainers (with tests!) (#3332)Amber Brown2018-06-061-7/+7
|
* federation/send_queue.py: fix usage of LaterGaugeIvan Shapovalov2018-06-031-1/+1
| | | | | Fixes a startup crash due to commit df9f72d9e5fe264b86005208e0f096156eb03e4b "replacing portions".
* Consistently use six's iteritems and wrap lazy keys/values in list() if ↵Amber Brown2018-05-313-5/+7
| | | | they're not meant to be lazy (#3307)
* fixesAmber Brown2018-05-231-4/+4
|
* cleanupAmber Brown2018-05-221-3/+2
|
* cleanup pep8 errorsAmber Brown2018-05-222-6/+21
|
* fixesAmber Brown2018-05-221-3/+3
|
* replacing portionsAmber Brown2018-05-214-53/+35
|
* Merge pull request #3209 from damir-manapov/masterRichard van der Hoff2018-05-111-2/+0
|\ | | | | transaction_id, destination defined twice
| * transaction_id, destination twiceDamir Manapov2018-05-101-2/+0
| |
* | Merge branch 'release-v0.28.1' into developRichard van der Hoff2018-05-011-3/+18
|\|
| * Apply some limits to depth to counter abuseRichard van der Hoff2018-05-011-3/+18
| | | | | | | | | | | | | | * 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
* | Merge branch 'develop' into py3-xrange-1Richard van der Hoff2018-04-301-2/+3
|\ \
| * \ Merge remote-tracking branch 'origin/develop' into rav/use_run_in_backgroundRichard van der Hoff2018-04-272-3/+12
| |\ \
| * | | 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.
* | | Move more xrange to sixAdrian Tschira2018-04-281-1/+3
| |/ |/| | | | | | | | | plus a bonus next() Signed-off-by: Adrian Tschira <nota@notafile.com>
* | Improve exception handling for background processesRichard van der Hoff2018-04-272-3/+12
|/ | | | | | | | | | | | | | | | | | 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.
* Merge pull request #3118 from matrix-org/rav/reject_prev_eventsRichard van der Hoff2018-04-231-2/+23
|\ | | | | Reject events which have lots of prev_events
| * Add some commentsRichard van der Hoff2018-04-181-2/+23
| |
* | Merge pull request #3106 from NotAFile/py3-six-itervalues-1Richard van der Hoff2018-04-202-9/+13
|\ \ | | | | | | Use six.itervalues in some places
| * | Use six.itervalues in some placesAdrian Tschira2018-04-152-9/+13
| |/ | | | | | | | | | | There's more where that came from Signed-off-by: Adrian Tschira <nota@notafile.com>
* | Merge pull request #3093 from matrix-org/rav/response_cache_wrapRichard van der Hoff2018-04-201-11/+11
|\ \ | | | | | | Refactor ResponseCache usage
| * | Reinstate linearizer for federation_server.on_context_state_requestRichard van der Hoff2018-04-201-5/+11
| | |
| * | Refactor ResponseCache usageRichard van der Hoff2018-04-121-11/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a `.wrap` method to ResponseCache which wraps up the boilerplate of a (get, set) pair, and then use it throughout the codebase. This will be largely non-functional, but does include the following functional changes: * federation_server.on_context_state_request: drops use of _server_linearizer which looked redundant and could cause incorrect cache misses by yielding between the get and the set. * RoomListHandler.get_remote_public_room_list(): fixes logcontext leaks * the wrap function includes some logging. I'm hoping this won't be too noisy on production.
* | | Refactor store.have_eventsRichard van der Hoff2018-04-201-1/+1
| |/ |/| | | | | | | | | It turns out that most of the time we were calling have_events, we were only using half of the result. Replace have_events with have_seen_events and get_rejection_reasons, so that we can see what's going on a bit more clearly.
* | fix federation_domain_whitelistMatthew Hodgson2018-04-131-6/+6
| | | | | | | | we were checking the wrong server_name on inbound requests
* | revert last to PR properlyMatthew Hodgson2018-04-131-6/+6
| |
* | correctly auth inbound federation_domain_whitelist reqsMatthew Hodgson2018-04-131-6/+6
| |
* | Revert "Use sortedcontainers instead of blist"Richard van der Hoff2018-04-131-7/+7
|/ | | | | | | | | | | This reverts commit 9fbe70a7dc3afabfdac176ba1f4be32dd44602aa. It turns out that sortedcontainers.SortedDict is not an exact match for blist.sorteddict; in particular, `popitem()` removes things from the opposite end of the dict. This is trivial to fix, but I want to add some unit tests, and potentially some more thought about it, before we do so.
* Merge pull request #3092 from matrix-org/rav/response_cache_metricsRichard van der Hoff2018-04-121-1/+1
|\ | | | | Add metrics for ResponseCache
| * Add metrics for ResponseCacheRichard van der Hoff2018-04-101-1/+1
| |
* | Set all metrics at the same timeErik Johnston2018-04-121-6/+6
| |
* | Track last processed event received_tsErik Johnston2018-04-111-0/+11
| |
* | Track where event stream processing have gotten up toErik Johnston2018-04-111-0/+4
| |
* | Merge pull request #2760 from Valodim/pypyRichard van der Hoff2018-04-111-7/+7
|\ \ | | | | | | Synapse on PyPy
| * | Use sortedcontainers instead of blistVincent Breitmoser2018-04-101-7/+7
| |/ | | | | | | | | | | | | | | This commit drop-in replaces blist with SortedContainers. They are written in pure python so work with pypy, but perform as good as native implementations, at least in a couple benchmarks: http://www.grantjenks.com/docs/sortedcontainers/performance.html
* | Merge pull request #3078 from matrix-org/erikj/federation_senderErik Johnston2018-04-101-15/+41
|\ \ | | | | | | Send federation events concurrently
| * | Use run_in_background insteadErik Johnston2018-04-101-1/+1
| | |
| * | Preserve log contexts correctlyErik Johnston2018-04-101-1/+4
| | |
| * | Log event ID on exceptionErik Johnston2018-04-101-1/+4
| | |
| * | Handle all events in a room correctlyErik Johnston2018-04-091-1/+2
| | |
| * | Send federation events concurrentlyErik Johnston2018-04-091-4/+18
| | |
| * | Handle exceptions in get_hosts_for_room when sending events over federationErik Johnston2018-04-091-11/+16
| |/
* | Ensure slashes are escapedErik Johnston2018-04-101-1/+1
| |
* | URL quote path segments over federationErik Johnston2018-04-101-48/+80
|/
* pep8Luke Barnard2018-04-061-1/+1
|
* Fix federation client `set_group_joinable` typoLuke Barnard2018-04-061-1/+1
|
* Implement group join APIDavid Baker2018-04-062-0/+31
|
* use PUT instead of POST for federating groups/m.join_policyKrombel2018-04-062-2/+2
|
* Use "/settings/" (plural)Luke Barnard2018-04-052-2/+2
|
* Use join_policy API instead of joinableLuke Barnard2018-04-032-6/+6
| | | | | | | | | | | | | | | | | The API is now under /groups/$group_id/setting/m.join_policy and expects a JSON blob of the shape ```json { "m.join_policy": { "type": "invite" } } ``` where "invite" could alternatively be "open".
* pep8David Baker2018-03-281-2/+1
|
* Add joinability for groupsDavid Baker2018-03-282-0/+37
| | | | | Adds API to set the 'joinable' flag, and corresponding flag in the table.
* Merge pull request #2978 from matrix-org/erikj/refactor_replication_layerErik Johnston2018-03-131-1/+1
|\ | | | | Remove ReplicationLayer and user Client/Server directly
| * s/replication_server/federation_serverErik Johnston2018-03-131-1/+1
| |
* | Merge pull request #2979 from matrix-org/erikj/no_handlersErik Johnston2018-03-134-69/+2
|\| | | | | Don't build handlers on workers unnecessarily
| * Remove unused ReplicationLayerErik Johnston2018-03-132-59/+0
| |
| * Split replication layer into twoErik Johnston2018-03-132-10/+2
| |
* | Merge pull request #2977 from matrix-org/erikj/replication_move_propsErik Johnston2018-03-134-22/+13
|\| | | | | Move property setting from ReplicationLayer to base classes
| * Move property setting from ReplicationLayer to FederationBaseErik Johnston2018-03-134-22/+13
| |
* | Fix docstring typesErik Johnston2018-03-131-2/+2
|/
* Split out edu/query registration to a separate classErik Johnston2018-03-131-48/+69
|
* Add federation_domain_whitelist option (#2820)Matthew Hodgson2018-01-224-3/+18
| | | | | | Add federation_domain_whitelist gives a way to restrict which domains your HS is allowed to federate with. useful mainly for gracefully preventing a private but internet-connected HS from trying to federate to the wider public Matrix network
* Metrics for events processed in appservice and fed senderRichard van der Hoff2018-01-151-0/+4
| | | | More metrics I wished I'd had
* Check missing fields in event_from_pdu_jsonRichard van der Hoff2017-12-301-0/+7
| | | | Return a 400 rather than a 500 when somebody messes up their send_join
* Factor out `event_from_pdu_json`Richard van der Hoff2017-12-303-37/+44
| | | | | turns out we have two copies of this, and neither needs to be an instance method
* federation_server: clean up importsRichard van der Hoff2017-12-301-14/+11
|
* federation_client: clean up importsRichard van der Hoff2017-12-301-13/+10
|
* Clear logcontext before starting fed txn queue runnerRichard van der Hoff2017-11-281-2/+8
| | | | | These processes take a long time compared to the request, so there is lots of "Entering|Restoring dead context" in the logs. Let's try to shut it up a bit.
* Remove preserve_context_over_{fn, deferred}Richard van der Hoff2017-11-141-2/+2
| | | | | Both of these functions ae known to leak logcontexts. Replace the remaining calls to them and kill them off.
* Add bracketsErik Johnston2017-11-091-2/+4
|
* Have an explicit API to update room configErik Johnston2017-11-082-1/+36
|
* Revert "Modify group room association API to allow modification of is_public"Erik Johnston2017-11-082-7/+6
|
* Update docs for updating room group associationLuke Barnard2017-11-011-1/+1
|
* Flake8Luke Barnard2017-10-311-3/+4
|
* Modify group room association API to allow modification of is_publicLuke Barnard2017-10-312-4/+4
| | | | also includes renamings to make things more consistent.
* Do logcontexts outside ResponseCacheErik Johnston2017-10-251-3/+5
|
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2017-10-241-3/+3
|\ | | | | | | erikj/group_fed_update_profile
| * replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-3/+3
| | | | | | | | what could possibly go wrong
* | Correctly wire in update group profile over federationErik Johnston2017-10-232-11/+31
|/
* Fix typoErik Johnston2017-10-191-1/+1
|
* Fix typo in group attestation handlingErik Johnston2017-10-191-1/+1
|
* Fix 500 error when we get an error handling a PDURichard van der Hoff2017-10-171-1/+0
| | | | | | | | | | FederationServer doesn't have a send_failure (and nor does its subclass, ReplicationLayer), so this was failing. I'm not really sure what the idea behind send_failure is, given (a) we don't do anything at the other end with it except log it, and (b) we also send back the failure via the transaction response. I suspect there's a whole lot of dead code around it, but for now I'm just removing the broken bit.
* DelintLuke Barnard2017-10-161-0/+2
|
* Implement GET /groups/$groupId/invited_usersLuke Barnard2017-10-162-1/+30
|
* Merge pull request #2529 from matrix-org/rav/fix_transaction_failure_handlingRichard van der Hoff2017-10-111-2/+3
|\ | | | | log pdu_failures from incoming transactions
| * log pdu_failures from incoming transactionsRichard van der Hoff2017-10-111-2/+3
| | | | | | | | | | | | | | ... even if we have no EDUs. This appears to have been introduced in 476899295f5fd6cff64799bcbc84cd4bf9005e33.
* | Fix typo in invite to groupErik Johnston2017-10-111-1/+1
| |
* | Merge pull request #2466 from matrix-org/erikj/groups_mergedErik Johnston2017-10-112-1/+892
|\ \ | | | | | | Initial Group Implementation
| * \ Merge branch 'develop' into erikj/groups_mergedDavid Baker2017-10-022-69/+78
| |\ \
| * | | Add remove room APIErik Johnston2017-09-262-1/+25
| | | |
| * | | Add bulk group publicised lookup APIErik Johnston2017-08-092-0/+32
| | | |
| * | | Add update group profile APIErik Johnston2017-07-201-0/+12
| | | |
| * | | CommentsErik Johnston2017-07-181-1/+1
| | | |
| * | | CommentsErik Johnston2017-07-181-0/+40
| | | |
| * | | Fix typosErik Johnston2017-07-181-2/+2
| | | |
| * | | Correctly parse query paramsErik Johnston2017-07-181-19/+19
| | | |
| * | | Add client apisErik Johnston2017-07-181-9/+187
| | | |
| * | | CommentsErik Johnston2017-07-181-15/+19
| | | |
| * | | Add local group server supportErik Johnston2017-07-172-0/+121
| | | |
| * | | Ensure category and role ids are non-nullErik Johnston2017-07-141-0/+24
| | | |
| * | | CommentsErik Johnston2017-07-131-0/+8
| | | |
| * | | Add summary APIs to federationErik Johnston2017-07-131-11/+223
| | | |
| * | | Add group summary APIsErik Johnston2017-07-121-0/+17
| | | |
| * | | Add federation API for adding room to groupErik Johnston2017-07-111-0/+18
| | | |
| * | | CommentErik Johnston2017-07-112-0/+26
| | | |
| * | | Initial group server implementationErik Johnston2017-07-102-1/+176
| | | |
* | | | fed server: process PDUs for different rooms in parallelRichard van der Hoff2017-10-091-19/+34
| | | | | | | | | | | | | | | | | | | | With luck, this will give a real-time improvement when there are many rooms and the server ends up calling out to fetch missing events.
* | | | Fed server: use a linearizer for ongoing transactionsRichard van der Hoff2017-10-091-1/+29
| |_|/ |/| | | | | | | | | | | We don't want to process the same transaction multiple times concurrently, so use a linearizer.
* | | fed server: refactor on_incoming_transactionRichard van der Hoff2017-10-091-24/+29
| | | | | | | | | | | | | | | Move as much as possible to after the have_responded check, and reduce the number of times we iterate over the pdu list.
* | | Fed server: Move origin-check code to _handle_received_pduRichard van der Hoff2017-10-091-24/+24
| | | | | | | | | | | | | | | | | | | | | The response-building code expects there to be an entry in the `results` list for each entry in the pdu_list, so the early `continue` was messing this up. That doesn't really matter, because all that the federation client does is log any errors, but it's pretty poor form.
* | | Fix up logcontext handling in (federation) TransactionQueueRichard van der Hoff2017-10-061-16/+32
| |/ |/| | | | | | | Avoid using preserve_context_over_function, which has problems with respect to logcontexts.
* | Make the spam checker a moduleDavid Baker2017-09-261-3/+2
| |
* | Fix logcontexts in _check_sigs_and_hashesRichard van der Hoff2017-09-202-60/+62
| |
* | Remove redundant `preserve_fn`Richard van der Hoff2017-09-201-2/+2
| | | | | | | | | | | | preserve_fn is a no-op unless the wrapped function returns a Deferred. verify_json_objects_for_server returns a list, so this is doing nothing.
* | PoC for filtering spammy events (#2456)Richard van der Hoff2017-09-191-16/+24
|/ | | Demonstration of how you might add some hooks to filter out spammy events.
* Separate federation servlet into different listsErik Johnston2017-07-051-8/+16
|
* Remove spurious log linesErik Johnston2017-06-071-1/+0
|
* Faster cache for get_joined_hostsErik Johnston2017-05-251-0/+2
|
* Make presence use cached users/hosts in roomErik Johnston2017-05-161-1/+1
|
* Do some logging when one-time-keys get claimedRichard van der Hoff2017-05-091-0/+10
| | | | | might help us figure out if https://github.com/vector-im/riot-web/issues/3868 has happened.
* Merge pull request #2190 from matrix-org/erikj/mark_remote_as_back_moreErik Johnston2017-05-051-0/+9
|\ | | | | Always mark remotes as up if we receive a signed request from them
| * Use preserve_fn and add logsErik Johnston2017-05-051-1/+3
| |
| * Always mark remotes as up if we receive a signed request from themErik Johnston2017-05-051-0/+7
| |
* | Add cache for get_current_hosts_in_roomErik Johnston2017-05-021-5/+1
|/
* Try harder when sending leave eventsRichard van der Hoff2017-04-211-1/+19
| | | | | When we're rejecting invites, ignore the backoff data, so that we have a better chance of not getting the room out of sync.
* Fix some lies, and other clarifications, in docstringsRichard van der Hoff2017-04-212-2/+68
| | | | | The documentation on get_json has been wrong ever since the very first commit to synapse...
* Merge pull request #2115 from matrix-org/erikj/dedupe_federation_replErik Johnston2017-04-122-45/+110
|\ | | | | Reduce federation replication traffic
| * CommentErik Johnston2017-04-121-2/+1
| |
| * Reuse get_interested_partiesErik Johnston2017-04-121-3/+3
| |
| * CommentErik Johnston2017-04-112-1/+9
| |
| * CommentsErik Johnston2017-04-111-7/+7
| |
| * Move get_interested_remotes back to presence handlerErik Johnston2017-04-111-35/+6
| |
| * CommentsErik Johnston2017-04-111-1/+14
| |
| * Reduce federation presence replication trafficErik Johnston2017-04-102-36/+110
| | | | | | | | | | | | | | | | This is mainly done by moving the calculation of where to send presence updates from the presence handler to the transaction queue, so we only need to send the presence event (and not the destinations) across the replication connection. Before we were duplicating by sending the full state across once per destination.
* | Merge pull request #2121 from matrix-org/paul/sent-transactions-metricPaul Evans2017-04-121-0/+3
|\ \ | | | | | | Add a counter metric for successfully-sent transactions
| * | Add a counter metric for successfully-sent transactionsPaul "LeoNerd" Evans2017-04-111-0/+3
| |/
* | Add some commentsErik Johnston2017-04-121-0/+15
| |
* | Use generatorsErik Johnston2017-04-101-2/+2
| |
* | Dedupe KeyedEdu and Devices federation repl trafficErik Johnston2017-04-101-6/+9
|/
* Rename variableErik Johnston2017-04-101-7/+7
|
* Revert to sending the same data type as beforeErik Johnston2017-04-101-2/+2
|
* Change nameErik Johnston2017-04-101-2/+2
|
* CommentsErik Johnston2017-04-101-4/+6
|
* CommentErik Johnston2017-04-071-2/+15
|
* Add loggingErik Johnston2017-04-071-0/+8
|
* Fix up federation SendQueue and document typesErik Johnston2017-04-071-26/+220
|
* Don't double json encode federation replication dataErik Johnston2017-04-051-10/+9
|
* Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2017-04-041-2/+6
|\ | | | | | | erikj/repl_tcp_server
| * Accept join events from all serversRichard van der Hoff2017-04-031-2/+6
| | | | | | | | | | | | | | Make sure that we accept join events from any server, rather than just the origin server, to make the federation join dance work correctly. (Fixes #1893).
* | Make federation send queue take the current positionErik Johnston2017-03-301-15/+25
|/
* Bail early if remote wouldn't be retried (#2064)Erik Johnston2017-03-291-2/+8
| | | | | | | | | | * Bail early if remote wouldn't be retried * Don't always return true * Just use get_retry_limiter * Spelling
* Merge pull request #2067 from matrix-org/erikj/notify_on_fedErik Johnston2017-03-291-0/+7
|\ | | | | Notify on new federation traffic
| * Notify on new federation trafficErik Johnston2017-03-271-0/+7
| |
* | Batch sending of device list pokesErik Johnston2017-03-241-0/+1
|/
* Ignore backoff history for invites, aliases, and roomdirsRichard van der Hoff2017-03-232-3/+10
| | | | | Add a param to the federation client which lets us ignore historical backoff data for federation queries, and set it for a handful of operations.
* push federation retry limiter down to matrixfederationclientRichard van der Hoff2017-03-233-141/+109
| | | | | rather than having to instrument everywhere we make a federation call, make the MatrixFederationHttpClient manage the retry limiter.
* Fix assertion to stop transaction queue getting wedgedRichard van der Hoff2017-03-151-0/+5
| | | | | | | | ... and update some docstrings to correctly reflect the types being used. get_new_device_msgs_for_remote can return a long under some circumstances, which was being stored in last_device_list_stream_id_by_dest, and was then upsetting things on the next loop.
* Move FederationServer._handle_new_pdu to FederationHandlerRichard van der Hoff2017-03-091-193/+1
| | | | | | | | | | | Unfortunately this significantly increases the size of the already-rather-big FederationHandler, but the code fits more naturally here, and it paves the way for the tighter integration that I need between handling incoming PDUs and doing the join dance. Other than renaming the existing `FederationHandler.on_receive_pdu` to `_process_received_pdu` to make way for it, this just consists of the move, and replacing `self.handler` with `self` and `self` with `self.replication_layer`.
* Move sig check out of _handle_new_pduRichard van der Hoff2017-03-091-12/+36
| | | | | When we receive PDUs via `get_missing_events`, we have already checked their sigs, so there is no need to do it again.
* Factor _get_missing_events_for_pdu out of _handle_new_pduRichard van der Hoff2017-03-091-62/+82
| | | | | This should be functionally identical: it just seeks to improve readability by reducing indentation.
* Fix docstringRichard van der Hoff2017-03-091-2/+1
|
* Fix a race in transaction queueRichard van der Hoff2017-02-201-9/+21
| | | | | | It was theoretically possible for a PDU to get queued and not sent for ages. On closer inspection I think there were bigger problems elsewhere, but we might as well fix this since it's easy.
* Correctly raise exceptions for ratelimitng. Ratelimit on 401Erik Johnston2017-02-011-1/+1
|
* Better handle 404 response for federation /send/Erik Johnston2017-01-311-0/+1
|
* Implement device key caching over federationErik Johnston2017-01-264-0/+47
|
* Fix up sending of m.device_list_update edusErik Johnston2017-01-251-60/+61
|
* Add basic implementation of local device list changesErik Johnston2017-01-251-3/+21
|
* Merge pull request #1824 from matrix-org/erikj/retry_host_logErik Johnston2017-01-181-1/+1
|\ | | | | Lower the not retrying host log line to debug
| * Lower the not retrying host log line to debugErik Johnston2017-01-171-1/+1
| |
* | Fix couple of federation state bugsErik Johnston2017-01-171-2/+4
|/
* Name linearizer's for better logsErik Johnston2017-01-091-2/+2
|
* do the discard check in the right place to avoid grabbing dependent eventsMatthew2017-01-071-20/+20
|
* Discard PDUs from invalid origins due to #1753 in 0.18.[56] v0.18.7-rc1Matthew2017-01-071-1/+23
|
* fix commentMatthew Hodgson2017-01-051-1/+17
|
* limit total timeout for get_missing_events to 10sMatthew Hodgson2017-01-053-3/+11
|
* Only send events that originate on this server.Mark Haines2017-01-051-0/+12
| | | | | | Or events that are sent via the federation "send_join" API. This should match the behaviour from before v0.18.5 and #1635 landed.
* Get the destinations from the state from before the eventMark Haines2017-01-041-8/+9
| | | | Rather than the state after then event.
* Send ALL membership events to the server that was affected.Mark Haines2017-01-041-3/+5
| | | | | | Send all membership changes to the server that was affected. This ensures that if the last member of a room on a server was kicked or banned they get told about it.
* s/aquire/acquire/gMark Haines2016-12-301-2/+2
|
* Add more useful logging when we block fetching eventsMark Haines2016-12-301-0/+9
|
* Remove fallback from get_missing_events.Mark Haines2016-12-301-69/+0
| | | | | | | get_missing_events used to fallback to fetching the missing events individually requesting from every server in the room, one by one.e This could be unacceptably slow, possibly causing #1732
* Add new API appservice specific public room listErik Johnston2016-12-063-5/+30
|
* Correctly handle 500's and 429 on federationErik Johnston2016-11-241-0/+7
|
* Shuffle receipt handler around so that worker apps don't need to load itErik Johnston2016-11-231-1/+0
|
* Explicit federation ackErik Johnston2016-11-231-2/+11
|
* CommentsErik Johnston2016-11-211-0/+2
|
* Add some metricsErik Johnston2016-11-211-48/+68
|
* CommentsErik Johnston2016-11-212-0/+29
|
* Remove explicit calls to send_pduErik Johnston2016-11-212-8/+9
|
* Fix testsErik Johnston2016-11-211-0/+3
|
* Store federation stream positions in the databaseErik Johnston2016-11-211-4/+17
|
* Handle sending events and device messages over federationErik Johnston2016-11-172-7/+63
|
* Hook up the send queue and create a federation sender workerErik Johnston2016-11-161-21/+68
|
* Add initial cut of federation send queueErik Johnston2016-11-161-0/+174
|
* Use new federation_sender DIErik Johnston2016-11-162-49/+10
|
* Add transaction queue and transport layer to DIErik Johnston2016-11-164-10/+6
|