Skip to content
Snippets Groups Projects
  • Sean Quah's avatar
    772e8c23
    Fix stack overflow in `_PerHostRatelimiter` due to synchronous requests (#14812) · 772e8c23
    Sean Quah authored
    
    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: default avatarSean Quah <seanq@matrix.org>
    Fix stack overflow in `_PerHostRatelimiter` due to synchronous requests (#14812)
    Sean Quah authored
    
    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: default avatarSean Quah <seanq@matrix.org>