Skip to content
Snippets Groups Projects
  • Richard van der Hoff's avatar
    1c262431
    Fix handling of connection timeouts in outgoing http requests (#8400) · 1c262431
    Richard van der Hoff authored
    
    * Remove `on_timeout_cancel` from `timeout_deferred`
    
    The `on_timeout_cancel` param to `timeout_deferred` wasn't always called on a
    timeout (in particular if the canceller raised an exception), so it was
    unreliable. It was also only used in one place, and to be honest it's easier to
    do what it does a different way.
    
    * Fix handling of connection timeouts in outgoing http requests
    
    Turns out that if we get a timeout during connection, then a different
    exception is raised, which wasn't always handled correctly.
    
    To fix it, catch the exception in SimpleHttpClient and turn it into a
    RequestTimedOutError (which is already a documented exception).
    
    Also add a description to RequestTimedOutError so that we can see which stage
    it failed at.
    
    * Fix incorrect handling of timeouts reading federation responses
    
    This was trapping the wrong sort of TimeoutError, so was never being hit.
    
    The effect was relatively minor, but we should fix this so that it does the
    expected thing.
    
    * Fix inconsistent handling of `timeout` param between methods
    
    `get_json`, `put_json` and `delete_json` were applying a different timeout to
    the response body to `post_json`; bring them in line and test.
    
    Co-authored-by: default avatarPatrick Cloke <clokep@users.noreply.github.com>
    Co-authored-by: default avatarErik Johnston <erik@matrix.org>
    Fix handling of connection timeouts in outgoing http requests (#8400)
    Richard van der Hoff authored
    
    * Remove `on_timeout_cancel` from `timeout_deferred`
    
    The `on_timeout_cancel` param to `timeout_deferred` wasn't always called on a
    timeout (in particular if the canceller raised an exception), so it was
    unreliable. It was also only used in one place, and to be honest it's easier to
    do what it does a different way.
    
    * Fix handling of connection timeouts in outgoing http requests
    
    Turns out that if we get a timeout during connection, then a different
    exception is raised, which wasn't always handled correctly.
    
    To fix it, catch the exception in SimpleHttpClient and turn it into a
    RequestTimedOutError (which is already a documented exception).
    
    Also add a description to RequestTimedOutError so that we can see which stage
    it failed at.
    
    * Fix incorrect handling of timeouts reading federation responses
    
    This was trapping the wrong sort of TimeoutError, so was never being hit.
    
    The effect was relatively minor, but we should fix this so that it does the
    expected thing.
    
    * Fix inconsistent handling of `timeout` param between methods
    
    `get_json`, `put_json` and `delete_json` were applying a different timeout to
    the response body to `post_json`; bring them in line and test.
    
    Co-authored-by: default avatarPatrick Cloke <clokep@users.noreply.github.com>
    Co-authored-by: default avatarErik Johnston <erik@matrix.org>