summary refs log tree commit diff
path: root/synapse/http/__init__.py
diff options
context:
space:
mode:
authorRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2018-04-27 14:32:54 +0100
committerGitHub <noreply@github.com>2018-04-27 14:32:54 +0100
commit955823672842b2102c4c6e204f81efbcd67200bc (patch)
treed70648dd1b7466452da27a4b7d8993c58481ed03 /synapse/http/__init__.py
parentMerge branch 'master' of github.com:matrix-org/synapse into develop (diff)
parentMerge remote-tracking branch 'origin/develop' into rav/deferred_timeout (diff)
downloadsynapse-955823672842b2102c4c6e204f81efbcd67200bc.tar.xz
Merge pull request #3127 from matrix-org/rav/deferred_timeout
Use deferred.addTimeout instead of time_bound_deferred
Diffstat (limited to 'synapse/http/__init__.py')
-rw-r--r--synapse/http/__init__.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/synapse/http/__init__.py b/synapse/http/__init__.py

index bfebb0f644..0d47ccdb59 100644 --- a/synapse/http/__init__.py +++ b/synapse/http/__init__.py
@@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # Copyright 2014-2016 OpenMarket Ltd +# Copyright 2018 New Vector Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,3 +13,24 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from twisted.internet.defer import CancelledError +from twisted.python import failure + +from synapse.api.errors import SynapseError + + +class RequestTimedOutError(SynapseError): + """Exception representing timeout of an outbound request""" + def __init__(self): + super(RequestTimedOutError, self).__init__(504, "Timed out") + + +def cancelled_to_request_timed_out_error(value): + """Turns CancelledErrors into RequestTimedOutErrors. + + For use with async.add_timeout_to_deferred + """ + if isinstance(value, failure.Failure): + value.trap(CancelledError) + raise RequestTimedOutError() + return value