synapse-product/synapse/rest/client
Sean Quah 772e8c2385
Fix stack overflow in _PerHostRatelimiter due to synchronous requests (#14812)
When there are many synchronous requests waiting on a
`_PerHostRatelimiter`, each request will be started recursively just
after the previous request has completed. Under the right conditions,
this leads to stack exhaustion.

A common way for requests to become synchronous is when the remote
client disconnects early, because the homeserver is overloaded and slow
to respond.

Avoid stack exhaustion under these conditions by deferring subsequent
requests until the next reactor tick.

Fixes #14480.

Signed-off-by: Sean Quah <seanq@matrix.org>
2023-01-13 00:16:21 +00:00
..
__init__.py Flatten the synapse.rest.client package (#10600) 2021-08-17 11:57:58 +00:00
_base.py Add support for /_matrix/client/v3 APIs (#11318) 2021-11-16 14:47:58 +01:00
account_data.py Add experimental support for MSC3391: deleting account data (#14714) 2023-01-01 03:40:46 +00:00
account_validity.py Addtional type hints for the REST servlets. (#10665) 2021-08-23 08:14:17 -04:00
account.py Disable sending confirmation email when 3pid is disabled #14682 (#14725) 2023-01-09 11:12:03 +00:00
auth.py Use getClientAddress instead of getClientIP. (#12599) 2022-05-04 14:11:21 -04:00
capabilities.py Implementation for MSC3664: Pushrules for relations (#11804) 2022-10-25 14:38:01 +01:00
devices.py Use ClientRestResource on both the main process and workers. (#14528) 2022-12-02 13:10:05 -05:00
directory.py Use Pydantic when PUTting room aliases (#14179) 2022-10-17 13:39:12 +01:00
events.py Do not allow a None-limit on PaginationConfig. (#14146) 2022-10-14 12:30:05 +00:00
filter.py Use direct references for configuration variables (part 6). (#10916) 2021-09-29 06:44:15 -04:00
initial_sync.py Do not allow a None-limit on PaginationConfig. (#14146) 2022-10-14 12:30:05 +00:00
keys.py Use ClientRestResource on both the main process and workers. (#14528) 2022-12-02 13:10:05 -05:00
knock.py Use ParamSpec in a few places (#12667) 2022-05-09 10:27:39 +00:00
login_token_request.py Save login tokens in database (#13844) 2022-10-26 11:45:41 +01:00
login.py Remove redundant types from comments. (#14412) 2022-11-16 15:25:24 +00:00
logout.py Add a type hint for get_device_handler() and fix incorrect types. (#14055) 2022-11-22 14:08:04 -05:00
models.py A third batch of Pydantic validation for rest/client/account.py (#13736) 2022-09-15 18:36:02 +01:00
mutual_rooms.py Mutual rooms: Remove dependency on user directory (#12836) 2022-05-30 10:05:31 +01:00
notifications.py Remove support for unstable private read receipts (#13653) 2022-09-01 13:31:54 +01:00
openid.py Remove HomeServer.get_datastore() (#12031) 2022-02-23 11:04:02 +00:00
password_policy.py Use direct references for some configuration variables (part 3) (#10885) 2021-09-23 07:13:34 -04:00
presence.py Additional type hints for REST servlets (part 2). (#10674) 2021-08-26 11:53:52 +00:00
profile.py synapse.api.auth.Auth cleanup: make permission-related methods use Requester instead of the UserID (#13024) 2022-08-22 14:17:59 +01:00
push_rule.py Add some type hints to datastore (#12717) 2022-05-17 15:29:06 +01:00
pusher.py Track device IDs for pushers (#13831) 2022-09-21 15:31:53 +00:00
read_marker.py Accept & store thread IDs for receipts (implement MSC3771). (#13782) 2022-09-23 14:33:28 +00:00
receipts.py Reject receipt requests with invalid room or event IDs. (#14632) 2022-12-07 17:35:41 +00:00
register.py Fix stack overflow in _PerHostRatelimiter due to synchronous requests (#14812) 2023-01-13 00:16:21 +00:00
relations.py Stabilize the threads API. (#14175) 2022-10-14 07:16:50 -04:00
rendezvous.py Implementation of HTTP 307 response for MSC3886 POST endpoint (#14018) 2022-10-18 15:52:25 +00:00
report_event.py Remove HomeServer.get_datastore() (#12031) 2022-02-23 11:04:02 +00:00
room_batch.py Reject history insertion during partial joins (#14291) 2022-10-27 10:52:23 +01:00
room_keys.py Add type annotations to trace decorator. (#13328) 2022-07-19 14:14:30 -04:00
room_upgrade_rest_servlet.py Addtional type hints for the REST servlets. (#10665) 2021-08-23 08:14:17 -04:00
room.py Move StateFilter to synapse.types (#14668) 2022-12-12 16:19:30 +00:00
sendtodevice.py Improve logging and opentracing for to-device message handling (#14598) 2022-12-06 09:52:55 +00:00
sync.py Return NOT_JSON if decode fails and defer set_timeline_upper_limit ca… (#14262) 2022-10-24 16:55:06 +01:00
tags.py Remove HomeServer.get_datastore() (#12031) 2022-02-23 11:04:02 +00:00
thirdparty.py Addtional type hints for the REST servlets. (#10665) 2021-08-23 08:14:17 -04:00
tokenrefresh.py Addtional type hints for the REST servlets. (#10665) 2021-08-23 08:14:17 -04:00
transactions.py Use ParamSpec in a few places (#12667) 2022-05-09 10:27:39 +00:00
user_directory.py Fix a long-standing bug where the user directory would return 1 more row than requested. (#14631) 2022-12-07 11:19:43 +00:00
versions.py Advertise support for Matrix v1.5. (#14576) 2022-11-29 10:49:23 -05:00
voip.py Fix getTurnServer response: return an integer ttl (#10922) 2021-09-30 08:04:55 -04:00