summary refs log tree commit diff
path: root/synapse/push/httppusher.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Correctly mention previous copyright (#16820)Erik Johnston2024-01-231-0/+1
| | | | | During the migration the automated script to update the copyright headers accidentally got rid of some of the existing copyright lines. Reinstate them.
* Update license headersPatrick Cloke2023-11-211-11/+16
|
* Some refactors around receipts stream (#16426)Erik Johnston2023-10-041-1/+1
|
* Rename blacklist/whitelist internally. (#15620)Patrick Cloke2023-05-191-1/+1
| | | | Avoid renaming configuration settings for now and rename internal code to use blocklist and allowlist instead.
* Merge branch 'release-v1.83' into developSean Quah2023-05-031-2/+1
|\
| * Revert "Reduce the size of the HTTP connection pool for non-pushers" (#15530) v1.83.0rc1Sean Quah2023-05-031-2/+1
| | | | | | | | | | | | | | | | | | #15514 introduced a regression where Synapse would encounter `PartialDownloadError`s when fetching OpenID metadata for certain providers on startup. Due to #8088, this prevents Synapse from starting entirely. Revert the change while we decide what to do about the regression.
* | Allow adding random delay to push (#15516)Erik Johnston2023-05-021-0/+18
|/ | | This is to discourage timing based profiling on the push gateways.
* Reduce the size of the HTTP connection pool for non-pushers. (#15514)Patrick Cloke2023-05-021-1/+2
| | | | | | | | | | | | | | Pushers tend to make many connections to the same HTTP host (e.g. a new event comes in, causes events to be pushed, and then the homeserver connects to the same host many times). Due to this the per-host HTTP connection pool size was increased, but this does not make sense for other SimpleHttpClients. Add a parameter for the connection pool and override it for pushers (making a separate SimpleHttpClient for pushers with the increased configuration). This returns the HTTP connection pool settings to the default Twisted ones for non-pusher HTTP clients.
* Add a module API to send an HTTP push notification (#15387)Mathieu Velten2023-04-261-77/+113
| | | Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
* Implement push rule evaluation in Rust. (#13838)Erik Johnston2022-09-291-3/+36
|
* Rename storage classes (#12913)Erik Johnston2022-05-311-2/+4
|
* Fix push for m.read events (#12721)SpiritCroc2022-05-171-1/+1
| | | | badge_count_last_call was always zero when the response for push notifications included a "rejected" key which mapped to an empty list.
* Remove `HomeServer.get_datastore()` (#12031)Richard van der Hoff2022-02-231-2/+2
| | | | | | | The presence of this method was confusing, and mostly present for backwards compatibility. Let's get rid of it. Part of #11733
* Upgrade mypy to version 0.931 (#12030)Sean Quah2022-02-181-1/+1
| | | Upgrade mypy to 0.931, mypy-zope to 0.3.5 and fix new complaints.
* Prevent duplicate push notifications for room reads (#11835)lukasdenk2022-02-171-1/+6
|
* Add type hints to event_push_actions. (#11594)Patrick Cloke2021-12-211-6/+6
|
* Improved push typing (#11409)Marcus2021-11-301-1/+2
| | | Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
* disallow-untyped-defs for synapse.push (#11023)David Robertson2021-10-111-2/+2
|
* Use direct references for configuration variables (part 4). (#10893)Patrick Cloke2021-09-231-1/+3
|
* Use direct references for some configuration variables (part 2) (#10812)Patrick Cloke2021-09-151-1/+1
|
* Use inline type hints in various other places (in `synapse/`) (#10380)Jonathan de Jong2021-07-151-1/+1
|
* Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-141-1/+0
| | | | | | | Part of #9744 Removes all redundant `# -*- coding: utf-8 -*-` lines from files, as python 3 automatically reads source code as utf-8 now. `Signed-off-by: Jonathan de Jong <jonathan@automatia.nl>`
* Import HomeServer from the proper module. (#9665)Patrick Cloke2021-03-231-1/+1
|
* Fixed code misc. quality issues (#9649)Ankit Dobhal2021-03-221-1/+1
| | | | | - Merge 'isinstance' calls. - Remove unnecessary dict call outside of comprehension. - Use 'sys.exit()' calls.
* Fix additional type hints from Twisted upgrade. (#9518)Patrick Cloke2021-03-031-2/+3
|
* Fix deleting pushers when using sharded pushers. (#9465)Erik Johnston2021-02-221-1/+2
|
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-161-9/+14
| | | | | | | - Update black version to the latest - Run black auto formatting over the codebase - Run autoformatting according to [`docs/code_style.md `](https://github.com/matrix-org/synapse/blob/80d6dc9783aa80886a133756028984dbf8920168/docs/code_style.md) - Update `code_style.md` docs around installing black to use the correct version
* Fix-up assertions about last stream token in push (#9020)Patrick Cloke2021-01-051-2/+0
| | | The last stream token is always known and we do not need to handle none.
* Convert internal pusher dicts to attrs classes. (#8940)Patrick Cloke2020-12-161-18/+18
| | | This improves type hinting and should use less memory.
* Fix handling of stream tokens for push. (#8943)Patrick Cloke2020-12-151-16/+1
| | | | Removes faulty assertions and fixes the logic to ensure the max stream token is always set.
* Add type hints for HTTP and email pushers. (#8880)Patrick Cloke2020-12-071-39/+29
|
* Add additional validation to pusher URLs. (#8865)Patrick Cloke2020-12-041-1/+15
| | | | Pusher URLs now must end in `/_matrix/push/v1/notify` per the specification.
* Apply an IP range blacklist to push and key revocation requests. (#8821)Patrick Cloke2020-12-021-1/+1
| | | | | | | | | | | | Replaces the `federation_ip_range_blacklist` configuration setting with an `ip_range_blacklist` setting with wider scope. It now applies to: * Federation * Identity servers * Push notifications * Checking key validitity for third-party invite events The old `federation_ip_range_blacklist` setting is still honored if present, but with reduced scope (it only applies to federation and identity servers).
* Add a config option to change whether unread push notification counts are ↵Andrew Morgan2020-11-301-2/+11
| | | | | | | | per-message or per-room (#8820) This PR adds a new config option to the `push` section of the homeserver config, `group_unread_count_by_room`. By default Synapse will group push notifications by room (so if you have 1000 unread messages, if they lie in 55 rooms, you'll see an unread count on your phone of 55). However, it is also useful to be able to send out the true count of unread messages if desired. If `group_unread_count_by_room` is set to `false`, then with the above example, one would see an unread count of 1000 (email anyone?).
* Fix not sending events over federation when using sharded event persisters ↵Erik Johnston2020-10-141-1/+7
| | | | | | | | | | | | | | | | | (#8536) * Fix outbound federaion with multiple event persisters. We incorrectly notified federation senders that the minimum persisted stream position had advanced when we got an `RDATA` from an event persister. Notifying of federation senders already correctly happens in the notifier, so we just delete the offending line. * Change some interfaces to use RoomStreamToken. By enforcing use of `RoomStreamTokens` we make it less likely that people pass in random ints that they got from somewhere random.
* Fixup pusher pool notifications (#8287)Erik Johnston2020-09-091-1/+1
| | | | | `pusher_pool.on_new_notifications` expected a min and max stream ID, however that was not what we were passing in. Instead, let's just pass it the current max stream ID and have it track the last stream ID it got passed. I believe that it mostly worked as we called the function for every event. However, it would break for events that got persisted out of order, i.e, that were persisted but the max stream ID wasn't incremented as not all preceding events had finished persisting, and push for that event would be delayed until another event got pushed to the effected users.
* Revert "Fixup pusher pool notifications"Erik Johnston2020-09-091-1/+1
| | | | This reverts commit e7fd336a53a4ca489cdafc389b494d5477019dc0.
* Fixup pusher pool notificationsErik Johnston2020-09-091-1/+1
|
* Stop sub-classing object (#8249)Patrick Cloke2020-09-041-1/+1
|
* Convert push to async/await. (#7948)Patrick Cloke2020-07-271-33/+25
|
* Hack to add push priority to push notifications (#7765)reivilibre2020-07-011-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove obsolete comment about ancient temporary code Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net> * Implement hack to set push priority based on whether the tweaks indicate the event might cause effects. * Changelog for 7765 Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net> * Antilint * Add tests for push priority Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net> * Update synapse/push/httppusher.py Co-authored-by: Brendan Abolivier <babolivier@matrix.org> * Antilint * Remove needless invites from tests. Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
* add a commentRichard van der Hoff2020-06-181-0/+2
|
* remove miscellaneous PY2 codeRichard van der Hoff2020-05-151-8/+3
|
* Reduce amount of logging at INFO level. (#6862)Erik Johnston2020-02-061-1/+1
| | | | | | | | A lot of the things we log at INFO are now a bit superfluous, so lets make them DEBUG logs to reduce the amount we log by default. Co-Authored-By: Brendan Abolivier <babolivier@matrix.org> Co-authored-by: Brendan Abolivier <github@brendanabolivier.com>
* Clean up newline quote marks around the codebase (#6362)Andrew Morgan2019-11-211-3/+2
|
* Support for routing outbound HTTP requests via a proxy (#6239)Richard van der Hoff2019-11-011-1/+1
| | | | | | | | | | | | | | | | | | | | The `http_proxy` and `HTTPS_PROXY` env vars can be set to a `host[:port]` value which should point to a proxy. The address of the proxy should be excluded from IP blacklists such as the `url_preview_ip_range_blacklist`. The proxy will then be used for * push * url previews * phone-home stats * recaptcha validation * CAS auth validation It will *not* be used for: * Application Services * Identity servers * Outbound federation * In worker configurations, connections from workers to masters Fixes #4198.
* Update black to 19.10b0 (#6304)Amber Brown2019-11-011-8/+6
| | | * 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-1/+2
|\ | | | | Add StateGroupStorage interface
| * Port to use state storageErik Johnston2019-10-301-1/+2
| |
* | Remove usage of deprecated logger.warn method from codebase (#6271)Andrew Morgan2019-10-311-2/+2
|/ | | Replace every instance of `logger.warn` with `logger.warning` as the former is deprecated.
* Add opentracing span for HTTP pushErik Johnston2019-09-091-1/+12
|
* Handle pusher being deleted during processing.Erik Johnston2019-08-011-7/+20
| | | | | Instead of throwing a StoreError lets break out of processing loop and mark the pusher as stopped.
* Replace returnValue with return (#5736)Amber Brown2019-07-231-9/+9
|
* Run Black. (#5482)Amber Brown2019-06-201-116/+110
|
* Make starting pushers faster during start upErik Johnston2019-04-021-2/+10
| | | | | | | | | | | We start all pushers on start up and immediately start a background process to fetch push to send. This makes start up incredibly painful when dealing with many pushers. Instead, let's do a quick fast DB check to see if there *may* be push to send and only start the background processes for those pushers. We also stagger starting up and doing those checks so that we don't try and handle all pushers at once.
* Correctly handle null data in HttpPusherErik Johnston2019-02-221-0/+5
|
* Add prometheus metrics for number of badge update pushes. (#4709)Richard van der Hoff2019-02-221-8/+25
| | | | | | We're counting the number of push notifications, but not the number of badges; I'd like to see if they are significant.
* Logging improvements for the pusher (#4691)Richard van der Hoff2019-02-201-8/+8
|
* Clean up event accesses and testsErik Johnston2018-11-021-2/+2
| | | | | This is in preparation to refactor FrozenEvent to support different event formats for different room versions
* sanity-check the is_processing flagRichard van der Hoff2018-10-241-4/+7
| | | | ... and rename it, for even more sanity
* Make on_started synchronous tooRichard van der Hoff2018-10-221-1/+0
| | | | | | This brings it into line with on_new_notifications and on_new_receipts. It requires a little bit of hoop-jumping in EmailPusher to load the throttle params before the first loop.
* Remove redundant run_as_background_process() from pusherpoolRichard van der Hoff2018-10-221-2/+0
| | | | | | | `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.
* Give pushers their own background logcontextRichard van der Hoff2018-10-221-34/+30
| | | | | | | | Each pusher has its own loop which runs for as long as it has work to do. This should run in its own background thread with its own logcontext, as other similar loops elsewhere in the system do - which means that CPU usage is consistently attributed to that loop, rather than to whatever request happened to start the loop.
* merge (#3576)Amber Brown2018-09-141-1/+6
|
* run isortAmber Brown2018-07-091-3/+3
|
* Remove all global reactor imports & pass it around explicitly (#3424)Amber Brown2018-06-251-2/+4
|
* fixesAmber Brown2018-05-221-2/+2
|
* replacing portionsAmber Brown2018-05-211-9/+4
|
* make imports localAdrian Tschira2018-04-281-2/+2
| | | | Signed-off-by: Adrian Tschira <nota@notafile.com>
* Improve exception handling for background processesRichard van der Hoff2018-04-271-1/+4
| | | | | | | | | | | | | | | | | | 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.
* Better logging when pushes failRichard van der Hoff2018-01-291-2/+8
|
* add appid/device_display_name to to pusher loggingRichard van der Hoff2018-01-291-2/+2
|
* Fix logging and add user_idRichard van der Hoff2018-01-221-2/+3
|
* logging and debug for http pusherRichard van der Hoff2018-01-221-4/+20
|
* Rename redact_content option to include_contentDavid Baker2017-11-081-1/+2
| | | | | | | | | | | | | | | | | | The redact_content option never worked because it read the wrong config section. The PR introducing it (https://github.com/matrix-org/synapse/pull/2301) had feedback suggesting the name be changed to not re-use the term 'redact' but this wasn't incorporated. This reanmes the option to give it a less confusing name, and also means that people who've set the redact_content option won't suddenly see a behaviour change when upgrading synapse, but instead can set include_content if they want to. This PR also updates the wording of the config comment to clarify that this has no effect on event_id_only push. Includes https://github.com/matrix-org/synapse/pull/2422
* replace 'except:' with 'except Exception:'Richard van der Hoff2017-10-231-3/+3
| | | | what could possibly go wrong
* Also include the room_idDavid Baker2017-09-181-0/+1
| | | | as really it's part of the event ID
* Use .get - it's much shorterDavid Baker2017-09-181-1/+1
|
* Add support for event_id_only push formatDavid Baker2017-09-181-0/+19
| | | | | | | Param in the data dict of a pusher that tells an HTTP pusher to send just the event_id of the event it's notifying about and the notification counts. For clients that want to go & fetch the body of the event themselves anyway.
* Fix TravisCI tests for PR #2301Caleb James DeLisle2017-06-231-1/+1
|
* Add configuration parameter to allow redaction of content from push messages ↵Caleb James DeLisle2017-06-231-1/+1
| | | | for google/apple devices
* Fix up push to use get_current_state_idsErik Johnston2016-08-251-1/+1
|
* Ignore AlreadyCalled errors on timer cancelErik Johnston2016-07-311-1/+6
|
* Create separate methods for getting messages to pushMark Haines2016-07-281-1/+2
| | | | | | | | | | | for the email and http pushers rather than trying to make a single method that will work with their conflicting requirements. The http pusher needs to get the messages in ascending stream order, and doesn't want to miss a message. The email pusher needs to get the messages in descending timestamp order, and doesn't mind if it misses messages.
* Use similar naming we use in email notifs for pushDavid Baker2016-06-241-3/+6
| | | | Fixes https://github.com/vector-im/vector-web/issues/1654
* Optionally split out the pushers into a separate processMark Haines2016-04-211-1/+1
|
* Add missing yieldErik Johnston2016-04-141-1/+1
|
* Rename log contextErik Johnston2016-04-141-1/+1
|
* Make send_badge privateErik Johnston2016-04-141-2/+2
|
* Add necessary logging contextsErik Johnston2016-04-141-24/+25
|
* Add extra MeasureErik Johnston2016-04-141-14/+16
|
* Run unsafe proces in a loop until we've caught upDavid Baker2016-04-111-4/+11
| | | | and wrap unsafe process in a try block
* Actually check if we;re processingDavid Baker2016-04-081-0/+2
|
* Make sure max stream ordering only increasesDavid Baker2016-04-081-1/+1
|
* Unsafe process should call itself if the max has changedDavid Baker2016-04-081-0/+3
|
* Comment why unsafe process is unsafeDavid Baker2016-04-081-0/+5
|
* Only pass in what we needDavid Baker2016-04-071-3/+5
|
* Wrap process in a flag so we don't process whist already processing.David Baker2016-04-071-0/+9
|
* Add measure blocksDavid Baker2016-04-071-5/+10
|
* Add comments on min_stream_idDavid Baker2016-04-071-0/+2
| | | | saying that the min stream id won't be completely accurate all the time
* Remove code that's now been obsoleted or moved elsewhereDavid Baker2016-04-071-1/+1
|
* Send badge count pushes.David Baker2016-04-071-16/+29
| | | | Also fix bugs with retrying.
* Make pushers use the event_push_actions table instead of listening on an ↵David Baker2016-04-061-38/+166
| | | | | | | event stream & running the rules again. Sytest passes, but remaining to do: * Make badges work again * Remove old, unused code
* Remove dead code for setting device specific rules.Mark Haines2016-02-181-2/+1
| | | | | | It wasn't possible to hit the code from the API because of a typo in parsing the request path. Since no-one was using the feature we might as well remove the dead code.
* Merge branch 'develop' into push_badge_countsDavid Baker2016-01-191-4/+4
|\
| * Rename 'user_name' to 'user_id' in push to make it consistent with the rest ↵Mark Haines2016-01-131-3/+3
| | | | | | | | of the code
* | Use the unread notification count to send accurate badge counts in push ↵David Baker2016-01-131-7/+7
|/ | | | notifications.
* copyrightsMatthew Hodgson2016-01-071-1/+1
|
* Reuse a single http client, rather than creating new onesMark Haines2015-12-021-4/+3
|
* Dial down logging for failed pushersDavid Baker2015-03-061-1/+1
|
* Add attribute so push gateways can tell if a member event is about the user ↵David Baker2015-03-061-0/+1
| | | | in question
* Send room ID in http notifications so clients know which room to go to if ↵David Baker2015-02-191-0/+1
| | | | the user responds to the notification.
* s/instance_handle/profile_tag/David Baker2015-02-031-2/+2
|
* Ignore empty strings for display names & room names in notificationsDavid Baker2015-01-311-2/+2
|
* Include content in notification pokesDavid Baker2015-01-291-0/+2
|
* Change 'from' in notification pokes to 'sender' to match client API v2. Send ↵David Baker2015-01-291-5/+4
| | | | sender display names where they exist.
* Code style fixes.Mark Haines2015-01-291-4/+4
|
* It is 2015David Baker2015-01-281-1/+1
|
* Reset badge count to zero when last active time is bumpedDavid Baker2015-01-281-3/+35
|
* Support membership events and more camelcase/underscoresDavid Baker2015-01-261-4/+4
|
* Use push settings!David Baker2015-01-231-4/+5
|
* use underscores everywhere, not camelcase.David Baker2015-01-201-3/+3
|
* add instance_handles to pushers so we have a way to refer to them even if ↵David Baker2015-01-201-1/+2
| | | | the push token changes.
* Send room name and first alias in notification poke.David Baker2015-01-151-3/+13
|
* Honour the 'rejected' return from push gatewaysDavid Baker2015-01-131-5/+10
| | | | | | | Add a timestamp to push tokens so we know the last time they we got them from the device. Send it to the push gateways so it can determine whether its failure is more recent than the token. Stop and remove pushers that have been rejected.
* after a few rethinks, a working implementation of pushers.David Baker2014-12-181-12/+13
|
* Update to app_id / app_instance_id (partially) and mangle to be PEP8 compliant.David Baker2014-12-031-33/+42
|
* More work on pushers. Attempt to do HTTP pokes. Not sure if the actual HTTP ↵David Baker2014-11-211-4/+51
| | | | pokes work or not yet but the retry semantics are pretty good.
* remove random half-lineDavid Baker2014-11-191-1/+0
|
* Start creating a module to do generic notifications (just prints them to ↵David Baker2014-11-191-0/+40
stdout currently!)